gpt4 book ai didi

docker - 在nfs挂载上运行的Docker导致无法复制和无法穿梭

转载 作者:行者123 更新时间:2023-12-02 18:28:05 24 4
gpt4 key购买 nike

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

如果我不包括nfs卷,则可以正常安装。

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

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

 > docker volume create --driver local \
--opt type=nfs4 \
--opt o=addr=192.168.1.48,rw \
--opt device=:/mnt/tank/virtualisation/database \
database
> 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"
}
]
> 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)
> showmount -e 192.168.1.48
Exports list on 192.168.1.48:
/mnt/tank/virtualisation/database Everyone

具有Docker的Debian 9.9 VM
> 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

最佳答案

我需要将NFS共享作为卷安装在Nginx容器中时遇到相同的问题。

在我的情况下,为NFS共享添加no_root_squash作为选项解决了问题:此选项导致NFS客户端的根用户/组映射到NFS服务器的根用户/组,例如您可以阅读here

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

/tank/honey-files 172.29.6.0/16(rw,sync,no_subtree_check,no_root_squash)

我可以将其安装到容器中以创建一个卷
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一起使用:

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

这个问题很老,但是...希望这个答案能对您有所帮助!

关于docker - 在nfs挂载上运行的Docker导致无法复制和无法穿梭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56126490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com