docker 镜像中文件神秘丢失

Jos*_*ose 2 docker dockerfile

我创建以下图像:

FROM node:14.7.0-alpine3.12
COPY ./test.txt /home/node/app/
Run Code Online (Sandbox Code Playgroud)

使用这个命令:

docker build . -t my-test
Run Code Online (Sandbox Code Playgroud)

镜像构建成功,我这样运行:

docker run -it my-test
Run Code Online (Sandbox Code Playgroud)

/home/node/app我使用 SSH检查该文件夹的内容。

到目前为止一切都很好。我将图像推送到我的 docker 注册表。我下载图像,运行它并执行相同的操作。都好。我可以看到该文件test.txt按预期存在。

我在其他机器上尝试了同样的操作,一切都很好。但是,在某些机器上,我执行相同的操作,但文件test.txt不存在。我仔细检查了哈希值,图像是正确的,但文件不在图像中。

怎么了?!

Yer*_*rke 5

如果您在现有目录上安装卷,您将丢失图像的原始内容。

在您的情况下,可能会发生这种情况,因为文件夹安装在路径的某一级别中/home/node/app

用于docker inspect <container>监视容器内已安装卷的列表("Mounts"字段)。您还可以使用以下命令提取并仅输出安装:
docker inspect -f '{{ .Mounts }}' <container>