我无法为Docker Swarm挂载NFS卷,并且缺少有关--mount语法(https://docs.docker.com/engine/reference/commandline/service_create/)的适当官方文档,这无济于事。
我基本上已经尝试过以下命令行来创建一个简单的nginx服务,其中将/ kkk目录安装到NFS卷上:
docker服务创建--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-名称测试nginx
命令行被Swarm接受并且服务由Swarm调度,但是容器永远不会达到“运行”状态,并且Swarm会每隔几秒钟尝试启动一个新实例。我将守护程序设置为调试,但有关卷显示没有错误...
使用NFS卷创建服务的正确语法是什么?
非常感谢
我在这里找到了一篇文章,展示了如何挂载 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"
Run Code Online (Sandbox Code Playgroud)
更新:
如果您想将它与 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"
Run Code Online (Sandbox Code Playgroud)
然后运行它
docker stack deploy -c docker-compose.yml test
Run Code Online (Sandbox Code Playgroud)