前言
场景:最近在公司测试使用Docker的时候遇到一个DNS解析的问题,导致镜像无法pull下来。
解决方案:1.搭建私有镜像库 2.使用docker镜像导出export(保存save)为文件的机制,就可以把镜像复制到任意的地方了。
当然,该文档记录的是“方法2”,“1.私有镜像”的后续其他文章专门写。(文章很多都在本地,平常工作比较忙只能抽时间整理、梳理)。
注:该文图片不贴上来拉了,部分东西涉及公司隐私,故以下文件名等是临时修改的。
docker导出、导入
可查看相应的镜像
docker images
使用 docker images 查看本机已有的镜像(也可以使用 docker commit <CONTAIN-ID> <IMAGE-NAME>命令把一个正在运行的容器保存为镜像)
根据具体镜像名,执行一下操作即可。
1.导出export 、导入import
docker export TestImages> /tmp/myImages.tar
导出完成后,就可以使用 import 导入了
docker import /tmp/myImages.tar
2.保存save 、加载 load
格式:docker save IMAGE(镜像)
docker save TestImages
有点慢,稍微等待一下,没有任何warn信息就表示保存OK,会出现镜像ID。
现在就可以在任何装 docker 的地方加载 刚保存的镜像了
docker load < /tmp/myImages.tar
导出 export 与 保存 save 的区别
1.export导出的镜像文件大小 小于 save保存的镜像
2.export 导出(import导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史,所以无法进行回滚操作(docker tag <LAYER ID> <IMAGE NAME>);而save保存(load加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。(查看方式:docker images --tree)
注:导入加载进来觉得不合适可以使用 docker rm 容器ID 、 docker rmi 镜像ID 来删掉。
移除所有的容器和镜像:
docker kill $(docker ps -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q -a)
备注:个人博客同步至简书。