Docker-compose 和卷

wed*_*dwo 7 docker docker-compose

当我手动创建一个卷并将其包含在 docker-compose 中时,如果我没有在卷标记前添加 docker_ 前缀,docker compose 会创建一个以 docker_ 为前缀的新卷 例如:我使用以下命令创建一个卷:

docker volume create myvolume
Run Code Online (Sandbox Code Playgroud)

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

这是正常行为吗?

Mus*_*did 13

是的,这是正常行为。当您在docker-compose.yml文件中指定不带前导前缀的卷时driver_,Docker Compose 将创建一个名称以 为前缀的新卷driver_。这是因为 Docker Compose 使用默认的驱动程序来创建和管理卷,这就是local驱动程序。

您可以在docker-compose.yml文件中指定一个卷,并使用external告诉 Docker Compose 使用现有卷而不是创建新卷的选项。例如:

version: '3'
services:
  myservice:
    volumes:
      - type: volume
        source: myvolume
        target: /app/data
        volume:
          external: true
Run Code Online (Sandbox Code Playgroud)

这将告诉 Docker Compose 使用现有卷myvolume而不是创建新卷。