专业编程基础技术教程

网站首页 > 基础教程 正文

使用docker in docker保存镜像(docker仓库用来保存镜像)

ccvgpt 2024-07-20 11:42:14 基础教程 12 ℃

项目中遇到问题,需要把服务用到的100多个镜像保存下来,以备到客户现场安装服务。开始用的方法是把一个个镜像使用docker save指令保存为一个个tar包,这样镜像占用的空间太大,假设一个tar包1G,100个镜像就有100G。

有什么方法减小保存的镜像容量?

docker pull拉取镜像保存到本机使用了覆盖文件系统,若不同镜像包含相同层,docker pull只会保存一次,这样可以大大减小保存到本机的镜像容量。举例: 下图中layer1、layer2被上层app镜像共用,layer1、layer2只会被拉取一次。

使用docker in docker保存镜像(docker仓库用来保存镜像)

docker pull保存的镜像如何直接使用?

docker pull 默认会把镜像数据放到/var/lib/docker目录,保存此目录数据。到客户现场部署时,把此镜像数据导入待部署服务机器,并在安装docker时,把docker数据存储目录指向存放镜像的数据目录。

docker in docker解决兼容性问题

若客户待部署机器安装的docker不能正常读写已保存的镜像目录(即在公司docker pull保存镜像用的docker 版本和待部署机器docker版本不一致)怎么办?若一个机器上已经安装了docker,不能直接修改它的数据存储目录怎么办?

docker in docker可以上场了。

保存镜像时使用docker in docker,在待部署机器运行docker in docker使用保存的镜像,docker in docker 本身也是一个镜像,可以使用不同docker 版本运行,成功解决上面的两个问题。


使用docker pull直接拉取并保存使用到的多个镜像,相比docker save一个个保存单个镜像减小了存储空间。docker in docker 使用保存好的镜像,避免docker 版本不同带来的兼容性问题。

Tags:

最近发表
标签列表