修改Docker容器
前言
上一篇文章给大家讲解了一下Docker的初级应用,按照文章上的讲解进行一遍实际操作大家将会对Docker的使用有一个初步了解,这篇文章我们将会带着大家学习如何修改一个容器。但是需要注意的是,我们在项目实际应用中几乎不需要去修改容器,Docker的容器我们在使用的时候默认只读,虽然容器可以修改。因为Docker容器是需要能够重复利用,快速部署,如果进行修改的话,团队其他成员和你的容器就会不同步,这样一来就会出问题。
修改容器的场景
首先,还是我们之前提到的,当我们需要某个容器的时候可以直接从Docker镜像库上下载,基本能满足我们所有的需求,但是万事皆有例外,比如,现有的nginx容器没有开启HTTPS模块,而我们的业务需要怎么办呢?此时我们就需要通过修改容器或者自己构建一个容器来实现我们的业务。这篇文章我们主要介绍如何修改容器。
如何进入容器
进入容器的方式之前的文章中我们曾经介绍过一种docker run
,现在我们先下载nginx镜像,然后运行docker run -it --name=nginx nginx
命令,然后我们会直接登录到容器内,此时,我们可以向操作Linux系统一样来对这个容器进行各种操作。但是此方式我们并不推崇,我们可以使用docker exec来进入容器。方式为:
- 运行
docker run -itd --name=nginx nginx
启动容器; - 启动成功后运行
docker exec -it nginx /bin/bash
(此处nginx名为容器名称,即上一条命令中--name参数的值); - 修改容器完成后执行
exit
退出容器;
如何保存对容器的修改
这里有的读者可能会有疑问,我进入容器完成修改并退出后不就结束了吗?为什么还要保存?关于这个问题我们需要回过头来理解一下镜像的概念。举个例子:
- 2018年4月10号我登录windows系统后做了一个系统镜像备份;
- 2018年4月11号我登录windows系统后对系统做了一些修改;
- 2018年4月12号我再次登录windows系统并通过10号的系统镜像备份对系统进行还原后,此时,系统已完全恢复到10号时登录的状态,11号所做的所有修改全部消失;
通过上面的例子大家应该已经清楚了,虽然我们对容器做了修改,但是该容器所对应的镜像文件并没有被修改,所以当我们删除容器并通过镜像重新启动后,我们的修改将不复存在,所以我们要对修改后的容器保存为一份新的镜像。
当我们完成对容器的修改后执行
# -a "参数可选,用于指定作者,可以写你的名字"
# -m "参数可选,提交信息,可以说一下你做了哪些修改"
# 35080a00743a 该参数为被修改的容器ID
# zhangsan/nginx 此为新镜像的名字,可自定义
# zs 此为新镜像的标签,可不写,不写时标签默认为latest
docker commit -a "zhangsan" -m "add https model" 35080a00743a zhangsan/nginx:zs
总结
该篇文章为大家介绍了一下如何手动修改Docker容器,该方式效率较低且不利于推广,我们只需要了解该项知识即可,下一篇文章会为大家介绍如何通过一个文件来构建我们所需要的容器,而我们构建的容器需要在团队推广的时候,其他成员只需要获取到的该文件执行一条命令就可以创建出一个一模一样的容器