您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何使用docker compose v3在容器中直接挂载NFS共享/卷

如何使用docker compose v3在容器中直接挂载NFS共享/卷

在发现大量未记录的文件之后,这是使用堆栈和docker compose挂载NFS卷的正确方法

最重要的是,您需要使用version: "3.2"或更高。如果没有的话,将会有奇怪而又不明显的错误

第二个问题是,卷的定义更改时 自动更新。当您所做的更改尚未应用时,这会使您陷入困境,认为更改是不正确的。确保您docker rm VOLUMENAME可能在任何地方都可以使用,就像该卷存在一样,它不会被验证。

第三个问题更多是NFS问题- 如果不存在,则不会在服务器 NFS文件夹。这就是NFS的工作方式。在执行任何操作之前,您需要确保它存在。

(除非确定您知道自己在做什么,否则不要删除’soft’和’nolock’-如果NFS服务器消失,这将使docker停止冻结)

这是一个完整的示例:

[root@docker 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"



[root@docker docker-mirror]# docker stack deploy --with-registry-auth -c nfs-compose.yml rsyslog
Creating network rsyslog_default
Creating service rsyslog_rsyslog
[root@docker 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
[root@docker docker-mirror]#

现在,在swarm-4上:

root@swarm-4:~# 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
root@swarm-4:~# docker exec -it d883e0f14d3f df -h /nfs
Filesystem                Size      Used Available Use% Mounted on
:/docker/example          7.2T      5.5T      1.7T  77% /nfs
root@swarm-4:~#

将在运行堆栈的任何群集节点上创建( )该卷。

root@swarm-4:~# 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"
    }
]
root@swarm-4:~#
其他 2022/1/1 18:20:15 有457人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶