也许我只是没有正确理解,但我试图从视觉上验证我是否正确使用了卷。
在我的 docker-compose 中,我会有类似的东西
some-project:
volumes:
- /some-local-path/some-folder:/v-test
我可以通过“ls -la/some-local-path/some-folder”验证它的内容在一些项目 Dockerfile 我会有类似的东西
RUN ls -la /v-test
返回“没有这样的文件或目录”这是正确的使用方法吗?如果是这样,为什么我不能从容器内查看内容?
最佳答案
Dockerfile
中的所有内容在 build:
之外的任何内容之前运行阻止 docker-compose.yml
文件被考虑。镜像构建看不到仅在 docker-compose.yml
中声明的卷或环境变量,并且无法访问其他服务。
在您的示例中,首先是 Dockerfile
尝试 ls
目录,然后 Compose 将使用绑定(bind)挂载启动容器。
如果你只是为了验证,可以 docker-compose run
一个容器,其大部分设置来自 docker-compose.yml
文件,但另一个命令:
docker-compose run some-project \
ls -la /v-test
(这样做需要图像的 CMD
是一个格式正确的 shell 命令;或者它没有 ENTRYPOINT
或者 ENTRYPOINT
是一个以 exec "$@"
结尾的包装脚本来运行 CMD
。如果你只有 ENTRYPOINT
,将其更改为 CMD
;如果您已将命令拆分为两个指令,请将其合并到单个 CMD
行中。)
关于docker-compose 并列出卷内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64574094/