【问题标题】:Docker-Compose mount volume overwrites host filesDocker-Compose 挂载卷覆盖主机文件
【发布时间】:2019-01-03 05:13:54
【问题描述】:

我正在从 CMS 挂载一个目录,其中包含 docker 容器内的内容文件。

安装绝对有效。 CMS 有一些基本文件,这些文件在构建过程中被复制到容器中的挂载文件夹中。然后它将被挂载到主机上的一个目录中。现在容器中的文件也在主机上。我可以更改它们,它们将保持同步。

如果我重新启动容器docker-compose stop && docker-compose up -d,主机上的文件将被容器构建中的默认文件覆盖。

是否有可能强制文件的本地状态覆盖容器中的文件?

亲切的问候

【问题讨论】:

  • 与其停止尝试删除容器'docker-compose rm'然后重新运行'docker-compose up -d',它会删除旧容器中的所有文件并始终使用挂载中可用的新文件文件夹。最终命令'docker-compose rm -f && docker-compose up -d'
  • 问题是在构建过程中会有一些文件复制到这个目录中,那些默认文件。因此,主机上的文件将被覆盖。
  • 好的,那么这只是一个建议——您可以在复制默认文件或通过传递参数删除旧文件时​​使用 IF ELSE 条件吗?这可能会解决您的问题。
  • 你能在这个问题中添加一些代码吗?例如,是否有一个入口点脚本或类似的东西将数据从容器中复制出来?您描述的行为不是 Docker 主机目录绑定挂载通常工作的方式。查看docker-compose.yml 文件也会有所帮助。

标签: docker docker-compose mount volumes


【解决方案1】:

也许可以尝试将其配置为只读

docker run -v volume-name:/path/in/container:ro my/image

【讨论】:

    【解决方案2】:

    您可以将其设置为只读作为 gCoh 答案。有关 docker-compose,请参见以下内容:

    volumes:
      - type: bind
        source: ./host-source-folder
        target: /container-folder
        read_only: true
    

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 2017-04-15
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多