我有一个docker映像,在目录/opt/app/config
中几乎没有配置文件,现在我想将此目录挂载到主机目录,以便可以从主机访问配置文件。
我的docker compose是一个关注
web:
image: web:v1
container_name: web
volumes:
- ./config:/opt/app/config
command: ["tail","-f","/dev/null"]
ports:
- 5000:5000
如果我使用docker run -it web:v1 bash
运行单个Web图像并执行ls /opt/app/config
,我可以看到配置文件
但是使用docker-compose up
创建了容器,但是文件没有反映在主机路径中。
当我执行ls ./config
时,目录为空。预期的行为是/opt/app/config
的docker映像中存在的文件被反映在我的主机./config
目录中。
答案 0 :(得分:2)
将主机目录装入容器时,主机目录的内容会遮盖容器的内容。
如果要访问主机上容器中存在的文件,可以按以下方式安装命名卷。
services:
web:
image: web:v1
container_name: web
volumes:
- config:/opt/app/config
command: ["tail","-f","/dev/null"]
ports:
- 5000:5000
volumes:
config:
然后,您可以使用docker inspect config
查找配置卷的路径,并从容器中查看内容。
如果要在主机上指定路径,则可以在撰写文件中指定命名卷的路径,如下所示。
volumes:
config:
driver_opts:
o: bind
device: /tmp/2 ------> Path on host machine