【问题标题】:Store Docker volume on external hard drive将 Docker 卷存储在外部硬盘驱动器上
【发布时间】:2026-01-12 08:05:02
【问题描述】:

我正在尝试将容器的数据存储在安装在/mnt/datadbs 的“外部硬盘驱动器”(/dev/xvdd) 上。

我的docker-compose.yml 看起来像这样:

version: "3":

services:
  ...

volumes:
  prometheus-data:
    driver: local
    driver_opts:
      type: btrfs
      device: /mnt/dataebs

当我启动容器时,我收到以下错误:

ERROR: for prometheus  Cannot create container for service prometheus: failed to mount local volume: mount /mnt/dataebs:/var/lib/docker/volumes/ubuntu_prometheus-data/_data: block device required

有人能指出我正确的方向吗?最终,我希望能够在“外部硬盘驱动器”上存储多个 docker 卷。

【问题讨论】:

    标签: docker docker-compose mount btrfs


    【解决方案1】:

    尝试将您的命名卷声明类型更改为“绑定”而不是“btrfs”。

    所以应该是这样的:

    volumes:
      prometheus-data:
        driver: local
        driver_opts:
          type: none
          device: /mnt/dataebs
          o: bind
    

    你也可以直接在你的服务声明中绑定 mount,像这样:

    app:
        image: appimage
        ports:
          - "8080:8080"
        volumes:
          - /mnt/dataebs:/container/path
    

    【讨论】:

    • 感谢您的回答。如果我将类型更改为“绑定”,我仍然会收到相同的错误“需要块设备”。就第二个选项而言,我不想使用此选项,因为这会导致目录 (/mnt/dataebs) 的所有权出现问题,因为挂载的目录是由 root 挂载的。还有其他选择吗?
    • 我会尝试选项 2,看看您是否遇到同样的错误。
    • 我在做了一些测试后更新了选项 1,尝试一下,如果您还有问题,请告诉我。