卷设备磁盘安装docker撰写错误-不是目录

时间:2020-06-26 01:14:14

标签: docker docker-compose

我需要使用docker-compose挂载磁盘。

目前,我可以使用docker service create通过这种方式进行组装:


docker service create -d \
 --name my-service \
 -p 8888:80 \
 --mount='type=volume,dst=/usr/local/apache2/htdocs,volume-driver=local,volume-opt=type=xfs,volume-opt=device=/dev/sdd' \
 httpd

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


version: '3.8'

services:
  my-service:
    image: httpd
    ports:
      - '80:80'
    volumes:
      - type: volume
        source: my-vol
        target: /usr/local/apache2/htdocs

volumes:
  my-vol:
    driver: local
    driver_opts:
      type: xfs
      o: bind
      device: '/dev/sdd'

使用docker-compose up上传服务时收到错误消息:

"failed to mount local volume: mount /dev/sdd:/var/lib/docker/volumes/apache_my-vol/_data, flags: 0x1000: not a directory"

如何配置docker-compose.yml使其能够装入磁盘?

*对不起,我的英语不好。

1 个答案:

答案 0 :(得分:1)

o:行与您传递给普通Linux mount (8)命令的选项相匹配。 o: bind手动创建一个 bind挂载,该文件将文件系统的一部分附加到其他位置;这就是Docker绑定安装系统背后的机制。此处发生变化的重要一点是,它实际上将device:解释为要重新安装的(主机系统)目录,而不是设备。

由于您尝试挂载物理设备,因此不需要o: bind选项。如果删除该选项,则device:将被解释为设备名称,并且可以挂载磁盘。