也许我只是无法正确理解,但是我正在尝试以视觉方式验证我是否正确使用了卷。
在我的 docker 组成中,我会喜欢
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 - docker-撰写并列出卷内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64574094/