我在docker容器中安装卷,然后尝试为目录创建一个符号链接,但它给出了协议错误。这个docker镜像/容器我在windows7上运行。
在运行docker时,工件在docker中安装了-v选项。
root@0946d7a3022b:/artifacts# mkdir a
root@0946d7a3022b:/artifacts# mkdir b
root@0946d7a3022b:/artifacts# chmod 777 a
root@0946d7a3022b:/artifacts# chmod 777 b
root@0946d7a3022b:/artifacts# ln -s b a
ln: failed to create symbolic link 'a/b': Protocol error
root@0946d7a3022b:/artifacts# ln -s a b
ln: failed to create symbolic link 'b/a': Protocol error
我将/ artifacts复制到其他文件夹/ testhere然后尝试了同样的事情,它会给出任何错误。
root@0946d7a3022b:/testhere# mkdir a
root@0946d7a3022b:/testhere# mkdir b
root@0946d7a3022b:/testhere# ln -s a b
root@0946d7a3022b:/testhere# ln -s b a
此替代解决方案增加了将已安装文件夹复制到docker容器内的其他文件夹的开销。 有人可以就此问题提出任何解决方案吗?
答案 0 :(得分:1)
ln: Protocol error
之所以发生是因为您必须是Windows Docker主机的管理员才能创建符号链接(即使您是Docker容器中的root用户,也不会这样)。
如果您在Windows 7上运行Docker,我猜您仍然使用依赖VirtualBox的Docker Toolbox。 你可以:
cmd
创建符号链接mklink
,它将被视为常规符号链接你的Docker容器。