Docker容器技术:commit和build命令解析

260 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

commit命令是基于某个image创建的container,然后做了一些变化,然后可以把已经改变的container commit一个新的image,简写为docker commit

build命令其实之前运行了很多次,docker build,基于Dockerfile来制作image。

docker commit命令

我们先采用交互式命令来运行,这样我们就有了一个container了,然后我们去在containner里面做一些变化,例如安装一个vim:

然后我们退出,可以看到有一个退出的容器:

这里如何通过commit来操作,第一个参数是需要commit的容器,第二个是创建的image的repository和tags。

这里我们可以看到有了一个新的image了,大小大一点,他们其实共享了很多的层,这里我们通过history命令来看:

再看一下新的image:

新的一层出来了,大小其实就是vim的大小。

当然这种创建image的方式其实不是很提倡,因为别人拿到我们的image是不知道如何产生的,因为我们可能把一切不安全因素放到image里面。

一般我们建议通过dockerfile来创建新的image。

docker build命令

我们先把之前的删掉:

这里我们先把新的目录创建好并在里面创建一个Dockerfile文件:

首先我们需要写FROM,这里的base image就是基于前有的image了:

FROM centos

RUN yum install -y vim // image是只读的,这里如何能够安装呢?

上述问题后面会解决,这里先保存退出。

然后build新的image:

这里running的一个id是build过程中新的临时的container的ID,然后再里面通过RUN指令来安装vim,然后执行完之后移除了:

然后基于临时container生成新的image:

所以这里建议新的image通过写Dockerfile来生成,这样我们分享给别人只需要分享一个Dockerfile就可以了!!!----然后可以build一个一样的image