发现,这是大量无证之后,这里的安装使用堆栈和码头工人撰写一个NFS卷的正确方法。
最重要的是你需要使用或更高。如果你不这样做,你会有奇怪的和不明显的错误。
第二个问题是卷是而不是当它们的定义更改时会自动更新。这可能导致你陷入一个兔子洞,认为你的变化在他们没有被应用时是不正确的。确保你在任何地方都可以使用docker rm VOLUMENAME
,就好像音量存在一样,它不会被验证。
第三个问题是更多的NFS问题 - 如果服务器上不存在NFS服务器的文件夹,则不会创建。这只是NFS的工作方式。在做任何事之前,你需要确保它存在。
(不要删除“软”和“NOLOCK”,除非你确定你知道你在做什么 - 这将停止搬运工冻结,如果你的NFS服务器消失)
这里有一个完整的例子:现在
[[email protected] docker-mirror]# cat nfs-compose.yml
version: "3.2"
services:
rsyslog:
image: jumanjiman/rsyslog
ports:
- "514:514"
- "514:514/udp"
volumes:
- type: volume
source: example
target: /nfs
volume:
nocopy: true
volumes:
example:
driver_opts:
type: "nfs"
o: "addr=10.40.0.199,nolock,soft,rw"
device: ":/docker/example"
[[email protected] docker-mirror]# docker stack deploy --with-registry-auth -c nfs-compose.yml rsyslog
Creating network rsyslog_default
Creating service rsyslog_rsyslog
[[email protected] docker-mirror]# docker stack ps rsyslog
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
tb1dod43fe4c rsyslog_rsyslog.1 jumanjiman/rsyslog:latest swarm-4 Running Starting less than a second ago
[[email protected] docker-mirror]#
,上群-4:
[email protected]:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d883e0f14d3f jumanjiman/rsyslog:latest "rsyslogd -n -f /e..." 6 seconds ago Up 5 seconds 514/tcp, 514/udp rsyslog_rsyslog.1.tb1dod43fe4cy3j5vzsy7pgv5
[email protected]:~# docker exec -it d883e0f14d3f df -h /nfs
Filesystem Size Used Available Use% Mounted on
:/docker/example 7.2T 5.5T 1.7T 77% /nfs
[email protected]:~#
该体积将被创建(但不被破坏)任何群节点上的S大头贴正在运行。
[email protected]:~# docker volume inspect rsyslog_example
[
{
"CreatedAt": "2017-09-29T13:53:59+10:00",
"Driver": "local",
"Labels": {
"com.docker.stack.namespace": "rsyslog"
},
"Mountpoint": "/var/lib/docker/volumes/rsyslog_example/_data",
"Name": "rsyslog_example",
"Options": {
"device": ":/docker/example",
"o": "addr=10.40.0.199,nolock,soft,rw",
"type": "nfs"
},
"Scope": "local"
}
]
[email protected]:~#
请不要忘记':'in'device:“:$ PathOnServer'' – MaxiReglisse
谢谢你指出,我把它添加到答案中更清楚。 – herm