概述
我们可以对容器实例进行修改,并生成定制化的镜像。
前面提到了 UnionFS 支持对文件系统的修改作为一次提交来一层层叠加。
众所周知,在 Git 当中,使用者可通过 git commit 的方式将当前的修改提交到本地仓库,而 Docker 中也有同样的设计理念,即通过 docker commit 提交容器实例的副本,使之成为一个新的定制化镜像。当然,定制化镜像可以通过 Dockerfile 来完成,这里只是为了方便新手理解。
docker commit 命令
该命令的用法为 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]],常用选项有:
- -m - 书写提交信息,与 git commit 中的 -m 选项一样
- -a - 指定作者
使用的示例如下:
Shell > docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
debian latest c978d997d5fe 3 weeks ago 117MB
nginx latest 92b11f67642b 6 weeks ago 187MB
Shell > docker run -it --name="debian_1" debian:latest /bin/bash
# 当前的容器实例没有 vim 命令可用
root@4a170ade996b:/# vi
vigr vipw
root@4a170ade996b:/# apt-get update
Get:1 http://deb.debian.org/debian bookworm InRelease [151 kB]
Get:2 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
Get:3 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
Get:4 http://deb.debian.org/debian bookworm/main amd64 Packages [8786 kB]
Get:5 http://deb.debian.org/debian bookworm-updates/main amd64 Packages [12.7 kB]
Get:6 http://deb.debian.org/debian-security bookworm-security/main amd64 Packages [150 kB]
Fetched 9203 kB in 4s (2229 kB/s)
Reading package lists... Done
root@4a170ade996b:/# apt-get -y install vim
...
root@4a170ade996b:/# vi
vi view vigr vim vim.basic vimdiff vimtutor vipw
ctrl + p + q 退出当前容器实例的交互终端。
查看当前正在运行的容器实例:
Shell > docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4a170ade996b debian:latest "/bin/bash" 9 minutes ago Up 9 minutes debian_1
将修改的容器实例进行 commit 提交:
Shell > docker commit -m "add vim command" -a "frank_lee" debian_1 frank_lee/debian-mod:1.0.0
Shell > docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
frank-lee/debian_mod 1.0.0 d962bce38245 25 seconds ago 178MB
debian latest c978d997d5fe 3 weeks ago 117MB
nginx latest 92b11f67642b 6 weeks ago 187MB
如您所见,对比原始镜像,定制化的镜像在存储大小、镜像 ID、版本号标签上发生了变化。
版权声明:「自由转载-保持署名-非商业性使用-禁止演绎 3.0 国际」(CC BY-NC-ND 3.0)
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论









