首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ansible的Docker NFS卷

使用Ansible的Docker NFS卷
EN

Stack Overflow用户
提问于 2020-08-31 15:27:04
回答 1查看 503关注 0票数 1

给出一个简单的例子,例如

代码语言:javascript
复制
$ docker volume create --driver local \
    --opt type=nfs \
    --opt o=addr=192.168.1.1,rw \
    --opt device=:/path/to/dir \
    foo

我如何使用Ansible来做同样的事情呢?我试过举个例子

代码语言:javascript
复制
- name: NFS volume mount
  docker_volume:
    driver: "local"
    driver_options:
      type: nfs
      o: "addr=192.168.1.1,rw"
      device: /path/to/dir
    volume_name: foo

这将创建没有错误的卷,但当卷与docker_container模块一起使用时,它将失败。

代码语言:javascript
复制
TASK [oracle-database : docker_container] **************************************
fatal: [oracle]: FAILED! => {"changed": false, "msg": "Error starting container 1beb3254e25a8fe47cd78e803a2050f24020cf72e138472d7d14d963e02bec7f: 500 Server Error: Internal Server Error (\"{\"message\":\"error while mounting volume '/var/lib/docker/volumes/foo/_data': failed to mount local volume: mount /path/to/dir:/var/lib/docker/volumes/foo/_data, data: addr=192.168.1.1: invalid argument\"}\")"}

当我使用Ansibe创建卷时

代码语言:javascript
复制
[root@oracle ~]# docker volume inspect oracle-dumps
[
    {
        "CreatedAt": "2020-08-31T02:07:14-07:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/foo/_data",
        "Name": "foo",
        "Options": {
            "device": "/path/to/dir",
            "o": "192.168.1.1,rw",
            "type": "nfs"
        },
        "Scope": "local"
    }
]

当我使用docker volume create手动创建卷时

代码语言:javascript
复制
[root@oracle ~]# docker volume inspect oracle-dumps
[
    {
        "CreatedAt": "2020-08-31T02:07:14-07:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/foo/_data",
        "Name": "foo",
        "Options": {
            "device": "/path/to/dir",
            "o": "192.168.1.1,rw",
            "type": "nfs"
        },
        "Scope": "local"
    }
]

除了标签属性,看起来几乎一样。

对于卷,容器的docker inspect是相同的

代码语言:javascript
复制
        {
            "Type": "volume",
            "Name": "oracle-dumps",
            "Source": "/var/lib/docker/volumes/foo/_data",
            "Destination": "/otherpath/to/dir",
            "Driver": "local",
            "Mode": "rw",
            "RW": true,
            "Propagation": ""
        }

所以结论是有一个bug,但是在哪里呢?有可能吗?docker-py?多克?

解决方法是

代码语言:javascript
复制
- name: Create dump volume
  command:
    cmd: "docker volume create --driver local --opt type=nfs --opt o=addr=192.168.1.1,rw --opt device=:/path/to/dir foo"
EN

回答 1

Stack Overflow用户

发布于 2020-10-20 10:19:15

问题是缺少:。设备路径应为:/path/to/dir

代码语言:javascript
复制
- name: NFS volume mount
  docker_volume:
    driver: "local"
    driver_options:
      type: nfs
      o: "addr=192.168.1.1,rw"
      device: :/path/to/dir
    volume_name: foo
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63666513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档