![](/img/trans.png)
[英]nfs volume mount to mysql docker container inside a ubuntu virtualbox fail
[英]Docker run on nfs mount causes fail to copy and fail to chown
我有一個 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 容器中作為卷安裝。
在我的例子中,添加no_root_squash
作為 NFS 共享的選項解決了這個問題:這個選項會導致 NFS 客戶端的 root 用戶/組被映射到 NFS 服務器的 root 用戶/組,你可以在這里閱讀。
所以,最后我的/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
這個問題很老了,但是......我希望這個答案可以幫助你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.