Docker 提供了两种构建镜像的方法:docker commit 命令与 Dockerfile 构建文件。本文先介绍前者,也就是如何使用 docker commit 命令把一个正在运行的容器变成一个新的镜像。
注意 Docker 并不建议用户通过 docker commit 方式构建镜像:
一是因为这是一种手工创建镜像的方式,容易出错,效率低且可重复性弱。
二是使用者并不知道镜像是如何创建出来的,里面是否有恶意程序。也就是说无法对镜像进行审计,存在安全隐患。
1,运行容器
本次我们需要在 Ubuntu base 镜像中安装 vi 并且保存为新镜像,所以首先运行一个 Ubuntu 容器:
1 | docker run -it ubuntu |
2,修改容器
(1)前面运行时由于添加 -it 参数则自动以交互模式进入容器内部。我们执行 vi 命令可以发现其确实没有安装。
(2)接着分别执行如下两个命令安装 vi
1 2 | apt update apt install vim |
(3)安装完毕后按下 Ctrl+P+Q 进行退出容器(但并不关闭容器)
3,将容器保存为新的镜像
(1)首先使用 docker ps 查看当前运行的容器。
(2)接着执行 docker commit 命令将容器保存为镜像:
31ea7f0dca66 为容器的短 ID
ubuntu-with-vi 为新镜像的名字
1 | docker commit 31ea7f0dca66 ubuntu-with-vi |
4,新镜像的使用
(1)使用 docker images 命令查看镜像,可以发现新镜像由于安装了软件体积变大了。
(2)而使用新镜像启动容器,可以发现 vi 已经可以使用了。
原文链接:https://www.hangge.com/blog/cache/detail_2412.html