前面我们讲解了Docker Hub上的镜像是基于Dockerfile文件,那我们可不可以自己构建镜像?怎样构建镜像?
实际上镜像的构建有三种方法:
1. 基于运行的容器状态生成新的镜像,即docker commit;
2. 基于Dockerfile构建镜像,即docker build;
3. 利用Docker Hub自动构建镜像。
基于运行的容器状态生成新的镜像,即docker commit
我们大体已经知道要运行容器就需要使用镜像,显然使用现成的镜像(无论是从Docker Hub还是从别人处获取)在方便不过了。但是实际工作中,现成的镜像往往不能完全满足我们的需求。例如官方的Ubuntu镜像就没有提供ssh的功能。那这个时候就需要我们基于已有的镜像去构建新的镜像。Docker提供的docker commit命令很好的实现了这一功能,其过程可以总结为:
1、基于已有的镜像运行容器;
2、进入容器修改容器;
3、利用docker commit生成新的镜像。
下面,我们以Ubuntu镜像为例演示如何构建新的镜像。

进入容器,bc50d965d081为容器短ID
查询ssh服务

更新源

安装openssh-server包


基于容器名docker commit生成新的镜像

查询本地新的镜像ubuntu-ssh

新的镜像大小变为205M,比原来大了将近100M,原因在安装openssh-server时安装了很多依赖包。验证新的镜像是否安装了ssh服务。

以上就是利用docker commit构建镜像的完整过程。下一节,我们将讲解另一种构建镜像的方法:基于Dockerfile的docker build命令。
下一篇:Docker的那些事儿—基于Dockerfile构建镜像,即docker build(11)

网友评论