docker 打包镜像
打包命令
docker commit # 这个和git的commit提交差不多
# 例子
docker commit -m="提交的描述信息" -a="作者" 提交的容器id 打包后的镜像名:tag版本号
注意:
实战测试
以之前的Tomcat为例,默认情况下官方在webapps
目录中是没有任何文件的,官方把默认的web文件放置在webapps.dist
目录下,我们就可以把文件搬过来,生成一个自己的镜像。
安装并搬运web文件
docker pull tomcat
# 下载完毕后运行
docker run -d -p 8080:8080 --name tomcat-commit tomcat
# 由于我们监听了端口,所以不会视为运行完毕,所以容器会一直运行
# 进入容器进行复制操作
docker ps # 获取容器id
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3259ead0b66 tomcat "catalina.sh run" 23 seconds ago Up 21 seconds 0.0.0.0:8080->8080/tcp tomcat-commit
# 进入容器
docker exec -it c3259ead0b66 /bin/bash
root@c3259ead0b66:/usr/local/tomcat# # 此时我们进入到了/usr/local/tomcat目录下
ls # 查看文件列表,目录文件正常
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
# 复制文件
root@c3259ead0b66:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@c3259ead0b66:/usr/local/tomcat# cd webapps
root@c3259ead0b66:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
# 访问 http://localhost:8080/ 正常即可
此时我们对镜像的操作完毕
打包镜像
# 由于是进入到了镜像进行了操作,我们需要先退出
exit
# 打包
docker ps # 获取镜像id
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3259ead0b66 tomcat "catalina.sh run" 4 minutes ago Up 4 minutes 0.0.0.0:8080->8080/tcp tomcat-commit
docker commit -a="mulingyuer" -m="测试打包" c3259ead0b66 tomcat-web:1.0
sha256:fdb9bf2f9bed2f5e6f309eb355ab78134dd46086dec4473c6b9868b1935a42f2 # 此时打包成功
# 查看镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat-web 1.0 fdb9bf2f9bed 40 seconds ago 684MB
此时打包成功
查看镜像详情
docker inspect fdb9bf2f9bed
# 数据太多,截取层级数据展示
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:11936051f93baf5a4fb090a8fa0999309b8173556f7826598e235e8a82127bce",
"sha256:31892cc314cb1993ba1b8eb5f3002c4e9f099a9237af0d03d1893c6fcc559aab",
"sha256:8bf42db0de72f74f4ef0c1d1743f5d54efc3491ee38f4af6d914a6032148b78e",
"sha256:26a504e63be4c63395f216d70b1b8af52263a5289908df8e96a0e7c840813adc",
"sha256:f9e18e59a5651609a1503ac17dcfc05856b5bea21e41595828471f02ad56a225",
"sha256:832e177bb5008934e2f5ed723247c04e1dd220d59a90ce32000b7c22bd9d9b54",
"sha256:3bb5258f46d2a511ddca2a4ec8f9091d676a116830a7f336815f02c4b34dbb23",
"sha256:59c516e5b6fafa2e6b63d76492702371ca008ade6e37d931089fe368385041a0",
"sha256:bd2befca2f7ef51f03b757caab549cc040a36143f3b7e3dab94fb308322f2953",
"sha256:3e2ed6847c7a081bd90ab8805efcb39a2933a807627eb7a4016728f881430f5f",
"sha256:1dfa47712528a26d0e3ab0fc0abb36db2f803f681f13873d9756770f91e198a4"
]
}
可以看到,我们的层级有11层,如果我们再去看run时所使用的tomcat镜像层级,发现他只有10层,所以我们的操作被视为一个层Layers处理了。
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据