也许我只是无法正确理解,但是我正在尝试以视觉方式验证我是否正确使用了卷。
在我的 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命令;它没有ENTRYPOINTENTRYPOINT是以exec "$@"结尾的包装脚本来运行CMD。如果只有ENTRYPOINT,请将其更改为CMD;如果将命令拆分为两个指令,将其合并为一个CMD行。)

关于docker - docker-撰写并列出卷内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64574094/

10-14 19:17
查看更多