创建一个Docker Swarm v1.12.3服务并挂载一个NFS卷

5
我无法为Docker Swarm挂载NFS卷,而有关--mount语法的正确官方文档缺失 (https://docs.docker.com/engine/reference/commandline/service_create/) 也没有帮助。

我尝试使用以下命令行创建一个简单的nginx服务,将/kkk目录挂载到NFS卷:

docker service create --mount type=volume,src=vol_name,volume-driver=local,dst=/kkk,volume-opt=type=nfs,volume-opt=device=192.168.1.1:/your/nfs/path --name test nginx

命令行被接受并由Swarm调度服务,但容器从未达到“运行”状态,并且Swarm每隔几秒钟尝试启动一个新实例。我将daemon设置为debug,但没有显示有关卷的错误...

创建具有NFS卷的服务的正确语法是什么?

非常感谢。

2个回答

2

我在这里找到了一篇文章,介绍了如何挂载nfs共享(并且对我有效):http://collabnix.com/docker-1-12-swarm-mode-persistent-storage-using-nfs/

sudo docker service create \
--mount type=volume,volume-opt=o=addr=192.168.x.x,volume-opt=device=:/data/nfs,volume-opt=type=nfs,source=vol_collab,target=/mount \
--replicas 3 --name testnfs \
alpine /bin/sh -c "while true; do echo 'OK'; sleep 2; done"

更新:
如果您想使用docker-compose,可以按照以下方式操作:
version: '3'

services:

  alpine:
    image: alpine
    volumes:
      - vol_collab:/mount
    deploy:
      mode: replicated
      replicas: 2
    command: /bin/sh -c "while true; do echo 'OK'; sleep 2; done"


volumes:
  vol_collab:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.xx.xx
      device: ":/data/nfs"

然后使用以下命令运行它:

docker stack deploy -c docker-compose.yml test

1
你也可以在Docker Compose中使用这个命令来创建NFS卷。
  data:
    driver: local
    driver_opts:
      type: "nfs"
      o: addr=<nfs-Host-domain-name>,rw,sync,nfsvers=4.1
      device: ":<path to directory in nfs server>"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接