首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker在nfs挂载上运行会导致复制失败和chown失败

Docker在nfs挂载上运行会导致复制失败和chown失败
EN

Stack Overflow用户
提问于 2019-05-14 16:57:49
回答 1查看 2K关注 0票数 2

我有一个nfs共享,我可以毫无问题地挂载它,但docker不想要它的条:/

如果我没有包含nfs卷,它可以很好地安装。

我已经尝试将nfs共享上的权限设置为"chmod 777“和"chown nobody:nobody”。

我可以从我的mac连接到它并写入nfs共享。

代码语言:javascript
复制
 > docker volume create --driver local \
    --opt type=nfs4 \
    --opt o=addr=192.168.1.48,rw \
    --opt device=:/mnt/tank/virtualisation/database \
    database
代码语言:javascript
复制
> docker volume inspect database
[
    {
        "CreatedAt": "2019-05-14T17:14:54+10:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/database/_data",
        "Name": "database",
        "Options": {
            "device": ":/mnt/tank/virtualisation/database",
            "o": "addr=192.168.1.48,rw",
            "type": "nfs4"
        },
        "Scope": "local"
    }
]
代码语言:javascript
复制
> docker run --name mysql -v database:/var/lib/mysql -v database:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d percona:ps-8


docker: Error response from daemon: failed to copy file info for /var/lib/docker/volumes/database/_data: failed to chown /var/li
b/docker/volumes/database/_data: lchown /var/lib/docker/volumes/database/_data: operation not permitted.

系统详细信息。

服务器(FreeNAS)

代码语言:javascript
复制
> showmount -e 192.168.1.48
Exports list on 192.168.1.48:
/mnt/tank/virtualisation/database  Everyone

带docker的Debian 9.9 VM

代码语言:javascript
复制
> docker version
Client:
 Version:           18.09.6
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        481bc77
 Built:             Sat May  4 02:36:00 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.6
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       481bc77
  Built:            Sat May  4 01:59:36 2019
  OS/Arch:          linux/amd64
  Experimental:     false
EN

回答 1

Stack Overflow用户

发布于 2020-03-03 23:47:33

我在NFS共享中遇到了同样的问题,我需要将其作为卷挂载到nginx容器中。

在我的例子中,为NFS共享添加no_root_squash选项解决了这个问题:这个选项会导致NFS客户端的根用户/组映射到NFS服务器的根用户/组,例如here

所以,最后我的/etc/exports看起来像这样:

代码语言:javascript
复制
/tank/honey-files 172.29.6.0/16(rw,sync,no_subtree_check,no_root_squash)

我可以将它挂载到一个容器中,创建一个卷

代码语言:javascript
复制
docker volume create honey-files --driver local --opt type=nfs --opt o=addr=172.29.6.200 --opt device=:/tank/honey-files

并在docker run / docker service create中使用它

代码语言:javascript
复制
docker run --name nginx --rm -v honey-files:/usr/share/nginx/html -p 30001:80 nginx:latest
docker service create --name nginx -p 30002:80 --mount 'src=honey-files,target=/usr/share/nginx/html' nginx:latest

这个问题很老了,但是...我希望这个答案能帮助你!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56126490

复制
相关文章

相似问题

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