我正在我的电脑上测试服务器。我已将 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但它给了我一个与只读文件系统相关的协议错误。