Docker--镜像篇

170 阅读22分钟

Docker 镜像相关命令

常用镜像仓库

 #官方仓库:hub.docker.com
 #私有仓库:Harbor
 #阿里云私有仓库:registry.cn-hangzhou.aliyuncs.com

搜索镜像

 #格式
 docker search [镜像名称]
   
 #实例
 [root@k8s-1 ~]# docker search redis
 NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
 redis                            Redis is an open source key-value store that…   9726      [OK]
 sameersbn/redis                                                                  83                   [OK]
 ​
 镜像名 描述  星 是否为官方镜像 私人制作镜像

拉取镜像

 # 格式
 docker pull [镜像名称]
 # 实例
 [root@k8s-1 ~]# docker pull redis
 Using default tag: latest
 latest: Pulling from library/redis
 
 # 镜像层
 33847f680f63: Pull complete
 26a746039521: Pull complete
 18d87da94363: Pull complete
 5e118a708802: Pull complete
 ecf0dbe7c357: Pull complete
 46f280ba52da: Pull complete
 
 # 镜像ID号(镜像ID号是全球唯一)
 Digest: sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59
 
 # 镜像下载状态
 Status: Downloaded newer image for redis:latest
 
 # 镜像的全称(镜像的tag)
 docker.io/library/redis:latest

查看当前系统上的有哪些镜像

 # 格式
 docker images 或者 docker image ls
 ​
 # 参数
 -q : 只显示镜像ID
 ​
 [root@k8s-1 ~]# docker image ls
 REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
 redis        latest    aa4d65e670d6   5 days ago   105MB
 [root@k8s-1 ~]# docker images -q
 aa4d65e670d6

获取镜像的详细信息

 # 格式
 docker inspect [镜像名称或镜像ID]
 ​
 # 参数
 -f : 格式化输出
 [root@k8s-1 ~]# docker inspect -f '{{.Id}}' redis
 sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
 [root@k8s-1 ~]# docker inspect -f '{{.ContainerConfig.Cmd}}' aa4d65e670d6
 [/bin/sh -c #(nop)  CMD ["redis-server"]]
 ​
 #注:其中的.和linux中的/相同,表示层级目录。

登录镜像仓库

 # 格式
 docker login 
 注: 默认情况下,docker login登录的是官方仓库,如果登录其他镜像仓库则需要指定镜像仓库的URL连接。
   
 # 实例
 [root@k8s-1 ~]# docker login --username=zhangshuaishuaiqaq registry.cn-hangzhou.aliyuncs.com
 Password:
 WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
 Configure a credential helper to remove this warning. See
 https://docs.docker.com/engine/reference/commandline/login/#credentials-store
 ​
 Login Succeeded
 ​
 ​
 [root@k8s-1 ~]# cat ~/.docker/config.json
 {
   "auths": {
     "registry.cn-hangzhou.aliyuncs.com": {
       "auth": "5byg5biF5biFcWFxOnpoYW5nNjY2"
     }
   }
 }
 ​
 # 参数
 --username|-u : 指定用户名
 --password|-p : 指定密码

镜像标签

 #镜像标签的构成
 docker.io/library/redis:latest
 docker.io   :镜像仓库的URL
 library     :镜像仓库命名空间
 redis       :镜像名称
 latest      :镜像版本号
 ​
 # 格式
 docker tag [镜像ID]  镜像标签
     
 [root@k8s-1 ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
 redis        latest    aa4d65e670d6   5 days ago   105MB
 ​
 [root@k8s-1 ~]# docker tag aa4d65e670d6 registry.cn-hangzhou.aliyuncs.com/fong/redis:v1
 ​
 [root@k8s-1 ~]# docker images
 REPOSITORY                                     TAG       IMAGE ID       CREATED      SIZE
 redis                                          latest    aa4d65e670d6   5 days ago   105MB
 registry.cn-hangzhou.aliyuncs.com/fong/redis   v1        aa4d65e670d6   5 days ago   105MB

镜像上传

 # 格式
 docker push [镜像标签]
 
 # 注:要想上传镜像,首先得登录镜像仓库,其次设置对应镜像仓库的tag
 
 [root@k8s-1 ~]# docker push registry.cn-hangzhou.aliyuncs.com/fong/redis:v1
 The push refers to repository [registry.cn-hangzhou.aliyuncs.com/fong/redis]
 262de04acb7e: Pushed
 45f6df634253: Pushed
 e46136075591: Pushed
 11f991845040: Pushed
 dd1ebb1f5319: Pushed
 814bff734324: Pushed
 v1: digest: sha256:1bd57e1a42b99ae53412b582784d0362fa8205243ce5f289cb4f76de2907cb97 size: 1574

镜像的删除

 # 格式
 docker rmi [镜像名称或者镜像ID]
   
 # 实例
 [root@k8s-1 ~]# docker rmi redis
 Untagged: redis:latest
 Untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59
 Deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
 Deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
 Deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9
 Deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
 Deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
 Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68
 Deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4
 
 # 参数
   -f  : 强制删除
   
 [root@k8s-1 ~]# docker rmi -f nginx
 Untagged: nginx:latest
 Untagged: nginx@sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
 Deleted: sha256:08b152afcfae220e9709f00767054b824361c742ea03a9fe936271ba520a0a4b
 Deleted: sha256:97386f823dd75e356afac10af0def601f2cd86908e3f163fb59780a057198e1b
 Deleted: sha256:316cd969204ae854302bc55c610698829c9f23fa6fcd4e0f69afa6f29fedfd68
 Deleted: sha256:dcec23d16cb7cdbd725dc0024f38b39fd326066fc59784df92b40fc05ba3728f
 Deleted: sha256:1e294000374b3a304c2bfcfe51460aa599237149ed42e3423ac2c3f155f9b4a5
 Deleted: sha256:c0d318592b21711dc370e180acd66ad5d42f173d5b58ed315d08b9b09babb84a
 Deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4
 
  # 注:当有容器正在使用镜像时,强制删除镜像,只能删除镜像的所有tag, 不会删除镜像。

清空镜像

 # 格式
 docker image prune
 
 # 实例
 [root@k8s-1 ~]# docker image prune
 WARNING! This will remove all dangling images.
 Are you sure you want to continue? [y/N] y
 Total reclaimed space: 0B
 
  # 参数
  -a : 删除所有镜像
  
 [root@k8s-1 ~]# docker image prune -a
 WARNING! This will remove all images without at least one container associated to them.
 Are you sure you want to continue? [y/N] y
 Deleted Images:
 untagged: nginx:latest
 untagged: nginx@sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
 deleted: sha256:08b152afcfae220e9709f00767054b824361c742ea03a9fe936271ba520a0a4b
 deleted: sha256:97386f823dd75e356afac10af0def601f2cd86908e3f163fb59780a057198e1b
 deleted: sha256:316cd969204ae854302bc55c610698829c9f23fa6fcd4e0f69afa6f29fedfd68
 deleted: sha256:dcec23d16cb7cdbd725dc0024f38b39fd326066fc59784df92b40fc05ba3728f
 deleted: sha256:1e294000374b3a304c2bfcfe51460aa599237149ed42e3423ac2c3f155f9b4a5
 deleted: sha256:c0d318592b21711dc370e180acd66ad5d42f173d5b58ed315d08b9b09babb84a
 untagged: redis:latest
 untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59
 deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
 deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
 deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9
 deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
 deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
 deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68
 deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4
 
 Total reclaimed space: 169.3MB

查看镜像历史(镜像的构建历史)

 # 格式
 docker history [镜像ID或镜像名称]
   
 # 实例
 [root@k8s-1 ~]# docker history redis
 IMAGE          CREATED      CREATED BY                                      SIZE      COMMENT
 aa4d65e670d6   5 days ago   /bin/sh -c #(nop)  CMD ["redis-server"]         0B
 <missing>      5 days ago   /bin/sh -c #(nop)  EXPOSE 6379                  0B
 <missing>      5 days ago   /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B
 <missing>      5 days ago   /bin/sh -c #(nop) COPY file:df205a0ef6e6df89…   374B
 <missing>      5 days ago   /bin/sh -c #(nop) WORKDIR /data                 0B
 <missing>      5 days ago   /bin/sh -c #(nop)  VOLUME [/data]               0B
 <missing>      5 days ago   /bin/sh -c mkdir /data && chown redis:redis …   0B
 <missing>      5 days ago   /bin/sh -c set -eux;   savedAptMark="$(apt-m…   31.7MB
 <missing>      5 days ago   /bin/sh -c #(nop)  ENV REDIS_DOWNLOAD_SHA=4b…   0B
 <missing>      5 days ago   /bin/sh -c #(nop)  ENV REDIS_DOWNLOAD_URL=ht…   0B
 <missing>      5 days ago   /bin/sh -c #(nop)  ENV REDIS_VERSION=6.2.5      0B
 <missing>      5 days ago   /bin/sh -c set -eux;  savedAptMark="$(apt-ma…   4.15MB
 <missing>      5 days ago   /bin/sh -c #(nop)  ENV GOSU_VERSION=1.12        0B
 <missing>      5 days ago   /bin/sh -c groupadd -r -g 999 redis && usera…   329kB
 <missing>      6 days ago   /bin/sh -c #(nop)  CMD ["bash"]                 0B
 <missing>      6 days ago   /bin/sh -c #(nop) ADD file:45f5dfa135c848a34…   69.3MB

保存镜像(commit)

 # 保存正在运行的容器直接为镜像
 # 格式:
 docker commit [容器ID|容器名称]
   
 # 实例
 [root@k8s-1 ~]# docker commit -a 'fong' -m 'nginx-docker' -p e610a53a0b46  test:v1
 sha256:71501a1e516d66c0ad128b5bd9caabcb0f566d2f7054d5e2ef1042a54d4ae8c7
 [root@k8s-1 ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
 test         v1        71501a1e516d   4 seconds ago   133MB
 redis        latest    aa4d65e670d6   5 days ago      105MB
 nginx        latest    08b152afcfae   6 days ago      133MB

保存镜像(import/export)

 # 保存正在运行的容器为镜像压缩包
 ## 保存容器为镜像
 docker export [容器的ID] > [包名称]
 ​
 # 实例
 [root@k8s-1 ~]# docker export e610a53a0b46 > nginx.tar
 [root@k8s-1 ~]# ls
 nginx.tar
 ​
 ## docker import [包名称] [自定义镜像名称]
 # 实例
 [root@k8s-1 ~]# docker import nginx.tar test:v2
 sha256:bb1180c4bd78d1014c065af0c6fac5e702c20178164e5dbdc263b58c567fa9f4
 [root@k8s-1 ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
 test         v2        bb1180c4bd78   13 seconds ago       132MB
 test         v1        71501a1e516d   About a minute ago   133MB
 redis        latest    aa4d65e670d6   5 days ago           105MB
 nginx        latest    08b152afcfae   6 days ago           133MB

保存镜像(save/load)

 # 保存镜像为压缩包
 # 保存镜像的格式:
 docker save [镜像名称|镜像ID] > [包名称]
 [root@k8s-1 ~]# docker save aa4d65e670d6 > redis.tar
 ​
 [root@k8s-1 ~]# ll
 -rw-r--r--. 1 root root 108826624 7月  28 21:45 redis.tar
 #参数 -o 镜像压缩包名
 ​
 [root@k8s-1 ~]# docker save -o redis-2.tar aa4d65e670d6
 [root@k8s-1 ~]# ll
 -rw-------. 1 root root 108826624 7月  28 21:46 redis-2.tar
 -rw-r--r--. 1 root root 108826624 7月  28 21:45 redis.tar
 ​
 # 导入镜像的格式:
 docker load < [包名称]
   
 #实例
 [root@k8s-1 ~]# docker rmi -f redis
 Untagged: redis:latest
 Untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59
 Deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
 Deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
 Deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9
 Deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
 Deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
 Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68
 [root@k8s-1 ~]#
 [root@k8s-1 ~]# docker load < redis.tar
 dd1ebb1f5319: Loading layer [==================================================>]  338.4kB/338.4kB
 11f991845040: Loading layer [==================================================>]  4.194MB/4.194MB
 e46136075591: Loading layer [==================================================>]  31.73MB/31.73MB
 45f6df634253: Loading layer [==================================================>]  2.048kB/2.048kB
 262de04acb7e: Loading layer [==================================================>]  3.584kB/3.584kB
 Loaded image ID: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
 [root@k8s-1 ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
 test         v2        bb1180c4bd78   4 minutes ago   132MB
 test         v1        71501a1e516d   5 minutes ago   133MB
 <none>       <none>    aa4d65e670d6   5 days ago      105MB
 nginx        latest    08b152afcfae   6 days ago      133MB
 ​
 # 注:save/load保存镜像无法自定义镜像名称,save保存镜像时如果使用ID保存则load导入镜像无名称,使用名称导入时才有名称。
 ​
 [root@k8s-1 ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
 <none>       <none>    08b152afcfae   6 days ago     133MB
 centos       latest    300e315adb2f   7 months ago   209MB
 [root@k8s-1 ~]# docker save centos:latest > centos.tar
 [root@k8s-1 ~]# docker rmi -f centos
 Untagged: centos:latest
 Untagged: centos@sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
 Deleted: sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55
 Deleted: sha256:2653d992f4ef2bfd27f94db643815aa567240c37732cae1405ad1c1309ee9859
 [root@k8s-1 ~]# docker load < centos.tar
 2653d992f4ef: Loading layer [==================================================>]  216.5MB/216.5MB
 Loaded image: centos:latest
 [root@k8s-1 ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
 <none>       <none>    08b152afcfae   6 days ago     133MB
 centos       latest    300e315adb2f   7 months ago   209MB
 ​

保存镜像的区别

 1export保存的镜像体积要小于save(save保存更完全,export保存会丢掉一些不必要的数据)
 2export可以重命名镜像名称而save则不行
 3、save可以同时保存多个镜像而export则不行

镜像标签

 #镜像标签的构成
 docker.io/library/redis:latest
 docker.io   :镜像仓库的URL
 library     :镜像仓库命名空间
 redis       :镜像名称
 latest      :镜像版本号
 ​
 # 格式
 docker tag [镜像ID]  镜像标签
     
 [root@k8s-1 ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
 redis        latest    aa4d65e670d6   5 days ago   105MB
 ​
 [root@k8s-1 ~]# docker tag aa4d65e670d6 registry.cn-hangzhou.aliyuncs.com/fong/redis:v1
 ​
 [root@k8s-1 ~]# docker images
 REPOSITORY                                     TAG       IMAGE ID       CREATED      SIZE
 redis                                          latest    aa4d65e670d6   5 days ago   105MB
 registry.cn-hangzhou.aliyuncs.com/fong/redis   v1        aa4d65e670d6   5 days ago   105MB

镜像上传

 # 格式
 docker push [镜像标签]
 
 # 注:要想上传镜像,首先得登录镜像仓库,其次设置对应镜像仓库的tag
 
 [root@k8s-1 ~]# docker push registry.cn-hangzhou.aliyuncs.com/fong/redis:v1
 The push refers to repository [registry.cn-hangzhou.aliyuncs.com/fong/redis]
 262de04acb7e: Pushed
 45f6df634253: Pushed
 e46136075591: Pushed
 11f991845040: Pushed
 dd1ebb1f5319: Pushed
 814bff734324: Pushed
 v1: digest: sha256:1bd57e1a42b99ae53412b582784d0362fa8205243ce5f289cb4f76de2907cb97 size: 1574

镜像的删除

 # 格式
 docker rmi [镜像名称或者镜像ID]
   
 # 实例
 [root@k8s-1 ~]# docker rmi redis
 Untagged: redis:latest
 Untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59
 Deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
 Deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
 Deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9
 Deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
 Deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
 Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68
 Deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4
 
 # 参数
   -f  : 强制删除
   
 [root@k8s-1 ~]# docker rmi -f nginx
 Untagged: nginx:latest
 Untagged: nginx@sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
 Deleted: sha256:08b152afcfae220e9709f00767054b824361c742ea03a9fe936271ba520a0a4b
 Deleted: sha256:97386f823dd75e356afac10af0def601f2cd86908e3f163fb59780a057198e1b
 Deleted: sha256:316cd969204ae854302bc55c610698829c9f23fa6fcd4e0f69afa6f29fedfd68
 Deleted: sha256:dcec23d16cb7cdbd725dc0024f38b39fd326066fc59784df92b40fc05ba3728f
 Deleted: sha256:1e294000374b3a304c2bfcfe51460aa599237149ed42e3423ac2c3f155f9b4a5
 Deleted: sha256:c0d318592b21711dc370e180acd66ad5d42f173d5b58ed315d08b9b09babb84a
 Deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4
 
  # 注:当有容器正在使用镜像时,强制删除镜像,只能删除镜像的所有tag, 不会删除镜像。

清空镜像

 # 格式
 docker image prune
 
 # 实例
 [root@k8s-1 ~]# docker image prune
 WARNING! This will remove all dangling images.
 Are you sure you want to continue? [y/N] y
 Total reclaimed space: 0B
 
  # 参数
  -a : 删除所有镜像
  
 [root@k8s-1 ~]# docker image prune -a
 WARNING! This will remove all images without at least one container associated to them.
 Are you sure you want to continue? [y/N] y
 Deleted Images:
 untagged: nginx:latest
 untagged: nginx@sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
 deleted: sha256:08b152afcfae220e9709f00767054b824361c742ea03a9fe936271ba520a0a4b
 deleted: sha256:97386f823dd75e356afac10af0def601f2cd86908e3f163fb59780a057198e1b
 deleted: sha256:316cd969204ae854302bc55c610698829c9f23fa6fcd4e0f69afa6f29fedfd68
 deleted: sha256:dcec23d16cb7cdbd725dc0024f38b39fd326066fc59784df92b40fc05ba3728f
 deleted: sha256:1e294000374b3a304c2bfcfe51460aa599237149ed42e3423ac2c3f155f9b4a5
 deleted: sha256:c0d318592b21711dc370e180acd66ad5d42f173d5b58ed315d08b9b09babb84a
 untagged: redis:latest
 untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59
 deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
 deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
 deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9
 deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
 deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
 deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68
 deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4
 
 Total reclaimed space: 169.3MB

查看镜像历史(镜像的构建历史)

 # 格式
 docker history [镜像ID或镜像名称]
   
 # 实例
 [root@k8s-1 ~]# docker history redis
 IMAGE          CREATED      CREATED BY                                      SIZE      COMMENT
 aa4d65e670d6   5 days ago   /bin/sh -c #(nop)  CMD ["redis-server"]         0B
 <missing>      5 days ago   /bin/sh -c #(nop)  EXPOSE 6379                  0B
 <missing>      5 days ago   /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B
 <missing>      5 days ago   /bin/sh -c #(nop) COPY file:df205a0ef6e6df89…   374B
 <missing>      5 days ago   /bin/sh -c #(nop) WORKDIR /data                 0B
 <missing>      5 days ago   /bin/sh -c #(nop)  VOLUME [/data]               0B
 <missing>      5 days ago   /bin/sh -c mkdir /data && chown redis:redis …   0B
 <missing>      5 days ago   /bin/sh -c set -eux;   savedAptMark="$(apt-m…   31.7MB
 <missing>      5 days ago   /bin/sh -c #(nop)  ENV REDIS_DOWNLOAD_SHA=4b…   0B
 <missing>      5 days ago   /bin/sh -c #(nop)  ENV REDIS_DOWNLOAD_URL=ht…   0B
 <missing>      5 days ago   /bin/sh -c #(nop)  ENV REDIS_VERSION=6.2.5      0B
 <missing>      5 days ago   /bin/sh -c set -eux;  savedAptMark="$(apt-ma…   4.15MB
 <missing>      5 days ago   /bin/sh -c #(nop)  ENV GOSU_VERSION=1.12        0B
 <missing>      5 days ago   /bin/sh -c groupadd -r -g 999 redis && usera…   329kB
 <missing>      6 days ago   /bin/sh -c #(nop)  CMD ["bash"]                 0B
 <missing>      6 days ago   /bin/sh -c #(nop) ADD file:45f5dfa135c848a34…   69.3MB

保存镜像(commit)

 # 保存正在运行的容器直接为镜像
 # 格式:
 docker commit [容器ID|容器名称]
   
 # 实例
 [root@k8s-1 ~]# docker commit -a 'fong' -m 'nginx-docker' -p e610a53a0b46  test:v1
 sha256:71501a1e516d66c0ad128b5bd9caabcb0f566d2f7054d5e2ef1042a54d4ae8c7
 [root@k8s-1 ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
 test         v1        71501a1e516d   4 seconds ago   133MB
 redis        latest    aa4d65e670d6   5 days ago      105MB
 nginx        latest    08b152afcfae   6 days ago      133MB

保存镜像(import/export)

 # 保存正在运行的容器为镜像压缩包
 ## 保存容器为镜像
 docker export [容器的ID] > [包名称]
 ​
 # 实例
 [root@k8s-1 ~]# docker export e610a53a0b46 > nginx.tar
 [root@k8s-1 ~]# ls
 nginx.tar
 ​
 ## docker import [包名称] [自定义镜像名称]
 # 实例
 [root@k8s-1 ~]# docker import nginx.tar test:v2
 sha256:bb1180c4bd78d1014c065af0c6fac5e702c20178164e5dbdc263b58c567fa9f4
 [root@k8s-1 ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
 test         v2        bb1180c4bd78   13 seconds ago       132MB
 test         v1        71501a1e516d   About a minute ago   133MB
 redis        latest    aa4d65e670d6   5 days ago           105MB
 nginx        latest    08b152afcfae   6 days ago           133MB

保存镜像(save/load)

 # 保存镜像为压缩包
 # 保存镜像的格式:
 docker save [镜像名称|镜像ID] > [包名称]
 [root@k8s-1 ~]# docker save aa4d65e670d6 > redis.tar
 ​
 [root@k8s-1 ~]# ll
 -rw-r--r--. 1 root root 108826624 7月  28 21:45 redis.tar
 #参数 -o 镜像压缩包名
 ​
 [root@k8s-1 ~]# docker save -o redis-2.tar aa4d65e670d6
 [root@k8s-1 ~]# ll
 -rw-------. 1 root root 108826624 7月  28 21:46 redis-2.tar
 -rw-r--r--. 1 root root 108826624 7月  28 21:45 redis.tar
 ​
 # 导入镜像的格式:
 docker load < [包名称]
   
 #实例
 [root@k8s-1 ~]# docker rmi -f redis
 Untagged: redis:latest
 Untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59
 Deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
 Deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
 Deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9
 Deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
 Deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
 Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68
 [root@k8s-1 ~]#
 [root@k8s-1 ~]# docker load < redis.tar
 dd1ebb1f5319: Loading layer [==================================================>]  338.4kB/338.4kB
 11f991845040: Loading layer [==================================================>]  4.194MB/4.194MB
 e46136075591: Loading layer [==================================================>]  31.73MB/31.73MB
 45f6df634253: Loading layer [==================================================>]  2.048kB/2.048kB
 262de04acb7e: Loading layer [==================================================>]  3.584kB/3.584kB
 Loaded image ID: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
 [root@k8s-1 ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
 test         v2        bb1180c4bd78   4 minutes ago   132MB
 test         v1        71501a1e516d   5 minutes ago   133MB
 <none>       <none>    aa4d65e670d6   5 days ago      105MB
 nginx        latest    08b152afcfae   6 days ago      133MB
 ​
 # 注:save/load保存镜像无法自定义镜像名称,save保存镜像时如果使用ID保存则load导入镜像无名称,使用名称导入时才有名称。
 ​
 [root@k8s-1 ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
 <none>       <none>    08b152afcfae   6 days ago     133MB
 centos       latest    300e315adb2f   7 months ago   209MB
 [root@k8s-1 ~]# docker save centos:latest > centos.tar
 [root@k8s-1 ~]# docker rmi -f centos
 Untagged: centos:latest
 Untagged: centos@sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
 Deleted: sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55
 Deleted: sha256:2653d992f4ef2bfd27f94db643815aa567240c37732cae1405ad1c1309ee9859
 [root@k8s-1 ~]# docker load < centos.tar
 2653d992f4ef: Loading layer [==================================================>]  216.5MB/216.5MB
 Loaded image: centos:latest
 [root@k8s-1 ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
 <none>       <none>    08b152afcfae   6 days ago     133MB
 centos       latest    300e315adb2f   7 months ago   209MB
 ​

保存镜像的区别

 1export保存的镜像体积要小于save(save保存更完全,export保存会丢掉一些不必要的数据)
 2export可以重命名镜像名称而save则不行
 3、save可以同时保存多个镜像而export则不行