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

mount files present in a directory in docker image with the directory in the host

我有一个 docker 映像,其中目录 /opt/app/config 中几乎没有配置文件,现在我想将此目录挂载到主机目录,以便可以从主机访问配置文件.

我的docker撰写如下

  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 的个人网络图像并执行 ls /opt/app/config 我可以看到配置文件

但使用 docker-compose up容器正在创建,但文件未反映在主机路径中。

当我执行 ls ./config 时,目录是空的。预期的行为是 /opt/app/config 的 docker 图像中存在的文件应该反映在我的主机 ./config 目录中。

当您将主机目录挂载到容器中时,主机目录的内容会影响容器的内容。

如果你想访问主机上容器中的文件,你可以按如下方式挂载命名卷。

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