【问题标题】:mount files present in a directory in docker image with the directory in the host将 docker 映像目录中存在的文件挂载到主机中的目录
【发布时间】:2020-01-05 09:35:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: docker docker-compose dockerfile docker-volume


    【解决方案1】:

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

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

    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 找到配置卷的路径并查看容器中的内容。

    如果要指定主机上的路径,可以在compose文件中指定命名卷的路径,如下所示。

    volumes:
      config:
        driver_opts:
          o: bind
          device: /tmp/2    ------> Path on host machine
    

    【讨论】:

    • 成功了,你能解释一下 driver_opts 中发生了什么
    • 您正在将配置选项传递给卷驱动程序。你可以在这里找到更多信息 - docs.docker.com/compose/compose-file
    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    相关资源
    最近更新 更多