资讯专栏INFORMATION COLUMN

Docker学习与和应用(二)_使用Docker

Ocean / 2776人阅读

摘要:在前一篇文章学习与和应用一初步认识中,我们初步介绍了解决了什么问题,容器化技术与传统的虚拟化方式的区别,以及简要介绍了的几大核心概念镜像容器和仓库。针对上述问题,提供了的,通过使用指令配置的方式来创建镜像。

在前一篇文章 Docker学习与和应用(一)_初步认识中,我们初步介绍了Docker解决了什么问题,Docker容器化技术与传统的虚拟化方式的区别,以及简要介绍了Docker的几大核心概念:镜像、容器和仓库。本文主要介绍Docker的使用,包括:

使用Docker管理镜像、容器和仓库

使用Dockerfile创建自定义镜像

容器的数据管理

Docker的安装和基础命令

Docker是建立在Linux内核基础上的,在目前的主流Linux系统中,都已经原生支持了Docker且使用体验也最好,当然,在Windows平台和MacOS系统中也支持Docker,只是需要使用类似Boot2Docker等虚拟化工具来提供Linux支持。关于在各种平台上安装Docker的方法参考官网的Docker Docs,这里不再赘述。

Docker提供了很多命令来管理镜像、容器和仓库。包括:

从Docker Hub仓库中查找search、上传push、下载pull镜像。

查看本地已有镜像、容器信息的imagesinspectps命令。

删除本地镜像和容器的rmirm命令。

基于已有容器创建镜像的commit命令和基于Dockerfile创建镜像build命令。

运行、进入容器的runexecattach命令。

镜像的保存和导入命令saveload,容器的导出导入命令exportimport

具体命令的使用方法使用命令docker --help查看所有命令列表,使用docker COMMAND --help查看具体命令的信息。下面是我用一张图总结的Docker的基础命令,供大家参考。

关于Docker的使用,可以跟着官网提供的示例运行学习 Hello world in a container,另外所有的命令可以查阅官网The Docker commands

使用Dockerfile创建镜像

创建自定义镜像的方法有两种:

从一个镜像启动容器后,对容器进行操作更新,然后使用docker commit命令将对镜像的操作提交。

使用Dockerfile的方式创建自定义的镜像。

使用docker commit命令的方式构建自定义镜像(参考Creating our own images),简单但是不够方便,此外,由于创建镜像的过程不够透明,不利于将镜像共享给他人使用、同时还不利于团队审阅镜像的创建过程。

针对上述问题,docker提供了的Dockerfile,通过使用指令配置的方式来创建镜像。Dockerfile是由一行行的命令指令组成,通过指令来阐述镜像的创建过程。从这个角度来看,Dockerfile类似于Makefile等工具,用来自动化构建镜像。

Dockerfile大体由四部分组成:

指明基础镜像指令FROM

维护者信息指令MAINTAINER

镜像操作指令RUNEVNADDWORKDIR

容器启动时的执行指令CMDENTRYPOINTUSER

这些指令的使用方法可以参考Docker Tutorial:使用 Dockerfile 实现自动化和官方Docker Doc:Dockerfile reference。使用Dockerfile创建自定义镜像很简单,但是要编写一个高质量的Dockerfile并不容易,除了查阅官方文档以外,可以参考Docker Hub中社区提供的大量Dockerfile范例。

Docker容器的数据管理

在使用Docker的过程中,必然会涉及到容器的数据管理操作,例如查看容器内应用生成或更新的数据,容器内数据的备份/恢复,容器之间进行数据共享等操作。Docker中数据管理等方式主要有两种:

数据卷(Data volumes)

数据卷容器(Data volume containers)

数据卷和数据卷容器

数据卷是一个供容器使用的特殊目录,用来存放持久化或共享数据的地方,而数据卷容器其实就是一个普通容器,只是这个容器专门提供数据卷给其它容器挂载使用,因此,数据卷和数据卷容器之间有着密切的联系,并不是两个完全不相关的概念。

当使用docker run或者docker create命令时,使用-v就可以在容器内创建一个数据卷,默认情况下,Docker Engine会在宿主机上的/var/lib/docker/volumes/目录下创建一个特殊目录,供容器挂载使用,而挂载了这个数据卷的容器便可以称为数据卷容器。我们将这种方式,称为在容器里创建一个数据卷,此外,我们还可以指定挂载一个宿主机的本地目录到容器中作为数据卷。

如上图所示,volume container1分别挂载了容器内创建的数据卷/vol1以及指定挂载了一个宿主机中的本地目录作为数据卷/vol2。而volume container2则只挂载了数据卷/vol2。通过这样,当我们修改Docker默认数据目录以及修改挂载的本地宿主机目录时,数据卷容器中挂载的数据卷/vol1和数据卷vol2中的数据也都会进行变更,反之亦然。

除了上述创建数据卷的方式外,我们还可以使用--volume-from的方式,指定数据卷容器,从而挂载其中的数据卷。还是上图中,containerA和containerB在使用docker run创建容器时,通过--volume-from选项指定直接使用volume container2中的数据卷/vol2。

数据卷的特性

通过前面所述,我们理解了什么是数据卷和数据卷容器,接下来,简要总结数据卷的特性:

当我们在创建容器时,数据卷就会自动初始化。

数据卷可以在容器之间共享和复用。

对数据卷的数据的更新,不会影响到镜像。

对数据卷的修改会立刻生效。

数据卷中的数据会一直存在,直到删除最后一个挂载该数据卷的容器被删除时,还需要显示指定删除关联的数据卷。

通过Docker提供的数据卷和数据卷容器的特性和机制,我们可以对容器内的数据进行共享、备份和恢复,增加了容器的容灾能力。即使容器在运行过程中发生故障也不用担心,只需要快速重新创建容器,挂载数据卷即可。当然,在实际生产环境中,还是需要配合支持诸如RAID、DRBD、以及ceph和HDFS等分布式存储技术来的达到数据的安全性和高可用性。

参考&引用

Docker Tutorial:必备的15条命令

Docker Tutorial:另外15条命令

Docker Doc:Best practices for writing Dockerfiles

Docker Doc:Data volumes & Data volume containers

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26623.html

相关文章

  • Docker学习与和应用(一)_初步认识

    摘要:分别进行配置和测试。也就是说对于开发和部署来说,使用可以更快速的交付和部署应用环境。更便捷的应用更新管理。使用镜像创建并启动一个容器。执行用户指定的应用程序。执行完毕后,容器被终止。 Docker是为应用的开发和部署提供的一站式容器解决方案,它能帮助开发者高效快速的构建应用,实现Build,Ship and Run Any App, Anywhere,从而达到一次构建,到处运行的目的。...

    kgbook 评论0 收藏0
  • 一篇文章带你掌握docker基础知识

    摘要:和区别让用户可以进入查看输出等等操作,但是并不会另外启动一个进程如果你用来退出,同时这个信号会默认情况会启动另外一个进程来进入,这里的操作是在这个进程下的。 走在通往docker的大道上——docker基础知识汇总 最后编辑时间:2017年03月09日 1.Docker是什么 Docker是一种新的容器化技术,为应用开发和部署提供一站式容器解决方案,能帮助开发者高效快速的构建应用,实...

    TANKING 评论0 收藏0
  • Docker学习之路()四种系统下安装Docker的方法

    摘要:如果查到的不是版的内核,可以用来升级然后更新启动加载器来加载新内核完成安装后,重启宿主机来启用新的内核重启之后,可以用确认是否运行了新版本内核。如果是较低版本的系统,需要先更新内核。然后重复上面的步骤即可。 本人的学习笔记,主要是对《我的第一本Docker书》、《Docker —— 从入门到实践》的学习记录,并结合其他各种资源的学习。这次记录了4种常见系统的Docker安装方法,这些系...

    BetaRabbit 评论0 收藏0
  • SegmentFault 技术周刊 Vol.5 - Docker丨Build, Ship, Run,

    摘要:此刻的后手指依旧飞速地敲打键盘,丝毫没有要停不下来意思。阅读本期技术周刊,你不光能弄明白什么是,使用的意义何在,还将被传授秘籍,以达的境界。周刊筛选的每篇内容,是作者的独到见解,踩坑总结和经验分享。 showImg(https://segmentfault.com/img/bVC5qJ?w=900&h=385); 啪嗒啪嗒,啪嗒啪嗒,听到后排动感十足的清脆键盘响,我就能猜到公司程序员定...

    Panda 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<