使用主机中的目录挂载docker映像目录中存在的文件

时间:2020-01-05 09:35:58

标签: docker docker-compose dockerfile docker-volume

我有一个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目录中。

1 个答案:

答案 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
相关问题