Virtualbox 中共享文件夹的 Docker 符号链接

Virtualbox 中共享文件夹的 Docker 符号链接

我正在我的电脑上测试服务器。我已将 Ubuntu 服务器安装为 Virtual Box 中的 VM。

版本 5.2.8.r121009

眼镜:

  • Ubuntu 17.10 4.13.0-21-通用
  • Docker 版本 18.04.0-ce,内部版本 3d479c0

我创建了两个共享文件夹。

root@docker:/var/lib/docker# ls /media/ -l
totalt 4
drwxr-xr-x 2 root root   4096 mai    8 23:15 cdrom
drwxrwx--- 1 root vboxsf    0 mai    8 23:46 sf_docker-compose
drwxrwx--- 1 root vboxsf    0 mai    9 00:17 sf_docker-volumes 

当我做

service docker stop && \
rm -fr /var/lib/docker/volumes && \
ln -s /media/sf_docker-volumes /var/lib/docker/volumes && \
service docker restart && \
docker ps

我收到以下错误

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. 
Is the docker daemon running?

因此我恢复为默认设置:

service docker stop && \
rm -fr /var/lib/docker/volumes && \
service docker restart && \
docker ps

一切又恢复正常了。

所以我的问题是,如何修复使用 /var/lib/docker/volumes/ 文件夹的符号链接时出现的权限问题。 我确信问题在于符号链接的组所有者是 vboxsf 而不是 root。但我似乎无法改变这一点。

答案1

要更改符号链接的所有权,请尝试以下命令,看看它是否能解决您的问题。可能需要 sudo。

 chown -H myuser:mygroup mysymbolic

答案2

经过多次尝试和错误,我发现我试图做的事情是不可能的。至少不是直接的。虚拟盒用于共享文件夹的文件系统对于系统来说是只读的,但对于用户来说是可读写的。(为什么我还没弄明白。)

我想要的是一种无缝体验,我不需要手动复制和粘贴文件,但我一生都无法弄清楚如何做到这一点。

唯一接近可行的解决方案是编辑我的 fstab 文件并在那里添加挂载。

docker /docker    vboxsf  defaults,uid=1000,gid=1000,umask=0022   0       0

然后创建一个为我完成这个的脚本

rm -fr /docker/* && \
mkdir /tmp/docker && \
cp -r /var/lib/docker/volumes/* /tmp/docker &&\
sudo chown -H bdbear:bdbear /tmp/docker && \
mv /tmp/docker/* /docker

这对我来说完成了一半的工作,所以没问题。但是自动解决方案会容易得多。

也许我会实施Inotify 工具使这个过程完全自动化,但现在我放弃了做这个小项目的想法。我尝试使用Rsync但它给了我一个与只读文件系统相关的协议错误。

相关内容