参考资料
制作自己的Docker镜像
制作自己的Docker镜像主要有如下两种方式:
- 在运行一个已有镜像后,我们进入对应容器,进行了相关的操作(安装、配置等),想要保存相关的操作记录,则可以通过 docker commit 将容器保存为一个新的镜像.
- 构建一个DockerFile(记录了镜像创建步骤),然后使用docker build创建一个新的镜像。
本文主要介绍通过commit进行镜像的创建,也就是我们基于一个已有镜像启动一个容器,然后再容器中进行相应的环境配置、软件安装,完成相关工作后,重新将容器打包成一个镜像。
DockerFile的创建可以参考另外一篇文章。
使用docker commit 命令来扩展镜像
docker commit的方案相对比较简单,而且在镜像创建过程中,允许通过交互式shell来进行容器的调试;但是仍然推荐使用DockerFile进行镜像的管理;docker commit 不会打包容器上挂载卷的数据;正在提交的容器和其进程将在提交镜像时暂停(关闭 –pause false)。
- 既然以容器为单位,所以首先我们需要获得一个运行状态的容器
1 | # 通过docker run 命令启动容器 |
- 进入容器,对容器内的环境(软件、文件、环境、用户等)进行更改。实际和正常使用容器的过程一样
1 | docker run -it -v /etc:/etc_test ae9660359c2a /bin/bash |
- docker commit 提交修改的镜像
1 | docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] # 从容器创建一个新的镜像。 |
使用 docker commit 完成登记以后,新的镜像就创建完成了。
可以看到,通过在容器中进行操作,然后commit保存镜像的方法非常便捷,尤其是针对镜像环境/软件依赖没有明确的情况下,可以灵活的进行环境的调整和测试。而且不需要额外的去熟悉学习DockerFile的相关命令和特性,对刚接触Docker的人来说相对友好。
但是另一个方面,每一个运行的容器中的所有操作统一保存到镜像,一方面难免会存在一些冗余操作,另一方面,不如dockerFile方便进行共享。