打包命令

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处理了。

分类: Docker 标签: docker打包镜像

评论

暂无评论数据

暂无评论数据

目录