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

时间:2016-11-11 09:22:52

标签: nfs docker-swarm

我无法为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安排服务,但容器永远不会到达"运行" state和swarm尝试每隔几秒启动一个新实例。我将守护进程设置为调试但没有关于卷的错误显示...

使用NFS卷创建服务的正确语法是什么?

非常感谢

2 个答案:

答案 0 :(得分:1)

我在这里发现了一篇文章,展示了如何安装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 :(得分:0)

您也可以在docker中创建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>"