【问题标题】:Docker-compose and volumesDocker-compose 和卷
【发布时间】:2020-04-12 16:33:03
【问题描述】:

当我手动创建一个卷并将其包含在 docker-compose 中时,如果我不使用 docker_ 作为卷标签的前缀,docker compose 会创建一个以 docker_ 为前缀的新卷 例如: 我创建了一个卷:

docker volume create myvolume

它在 /var/lib/docker/volumes/myvolume 中可见。 我将它包含在我的 docker-compose yaml 文件中,但是当我运行 docker-compose 时,会在 /var/lib/docker/volumes/docker_myvolume 中创建一个新卷 如果我调用我的卷 docker_myvolume 并将其包含在我的 docker-compose yaml 中,它会使用它并且不会创建它自己的。

这是正常行为吗?

【问题讨论】:

标签: docker docker-compose


【解决方案1】:

你需要设置external: true来告诉docker-compose这个卷是在Compose之外创建的;否则,Compose 将尝试创建一个名为 [projectname]_myvolume 的卷。

在下面的示例中,docker-compose up 不会尝试创建卷,而是在卷不存在时引发错误。

volumes:
  myvolume:
    external: true

【讨论】:

    【解决方案2】:

    是的,Compose 通常使用 project name 作为前缀。这包括容器、网络和命名卷。一般来说,如果你确实需要与这些东西交互,有一个等效的docker-compose 命令可以选择正确的名称(例如docker-compose exec)。

    一般来说,您不应该直接修改/var/lib/docker 中的内容。该目录树是 Docker 的私有状态,对那里的文件格式没有特别的保证。如果您的用例涉及直接与主机中的卷文件交互,请使用 /host/path:/container/path bind mountexplicitly specify the storage location 使用 volume options

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-05
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 2018-01-31
      相关资源
      最近更新 更多