在docker里看到挂载的卷的协议错误

我在docker容器中安装卷,然后尝试创build一个目录的符号链接,但它给协议错误。 这个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 -sba ln: failed to create symbolic link 'a/b': Protocol error root@0946d7a3022b:/artifacts# ln -sab ln: failed to create symbolic link 'b/a': Protocol error 

我复制/文物到其他文件夹/ testhere,然后尝试相同的事情,它dint给任何错误。

 root@0946d7a3022b:/testhere# mkdir a root@0946d7a3022b:/testhere# mkdir b root@0946d7a3022b:/testhere# ln -sab root@0946d7a3022b:/testhere# ln -sba 

这种替代解决scheme增加了复制挂载文件夹到Docker容器内的其他文件夹的开销。 有人可以提出任何解决scheme这个问题?

ln: Protocol error发生ln: Protocol error是因为您必须是Windows Docker主机上的pipe理员才能创build符号链接(即使您是Docker容器中的根目录,也不是这样)。

如果你在Windows 7上运行Docker,我想你仍然使用依靠VirtualBox的Docker Toolbox。 你可以:

  • 以pipe理员身份运行VirtualBox,然后从那里启动您的Boot2Docker虚拟机(您可能必须先在Virtualbox会话中添加此现有虚拟机)
  • 或者,如果是一次性命令,则直接从Windows Docker主机上的pipe理员cmd创build您的符号链接(使用mklink ,它将被视为Docker容器中的常规符号链接。