首页 > 解决方案 > `docker load` 时如何保持图层(没有壁球)

问题描述

目前我们正在使用docker 19.03.15

对于 的 A 和 B 的探测docker image history,我们发现在 B 处只有一个图像层,而其他图像层是<missing>;签入docker run,所有内容都在那里,这意味着docker将所有层合二为一!

我的问题是:如何告诉 docker 从 tar 球加载图像并保留图层?

对于层,我的意思是,在 Dockerfile 中有命令的地方,就有一层,例如

FROM ubuntu:20.04

RUN apt-get update && apt-get install -y vim # create one layer
RUN apt-get install -y python3               # create another layer

之后docker build,使用docker image history可以看到

IMAGE      | CREATED BY
hash1      | |0 /bin/sh -c apt-get install -y python3
hash2      | |0 /bin/sh -c apt-get update && apt-get install -y vim
hash3      | ... (base image last command)
<missing>  | ...

之后docker loaddocker image history将显示

IMAGE      | CREATED BY
hashx      | |0 /bin/sh -c apt-get install -y python3
<missing>  | |0 /bin/sh -c apt-get update && apt-get install -y vim
<missing>  | ... (base image last command)
<missing>  | ...

标签: docker

解决方案


黑客方式:我们可以直接操作/var/lib/docker来转储图像数据并删除我们想要的图层。


推荐阅读