使用ln查看协议错误,了解docker中的已安装卷

时间:2017-04-26 00:50:58

标签: docker dockerfile docker-machine

我在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容器内的其他文件夹的开销。 有人可以就此问题提出任何解决方案吗?

1 个答案:

答案 0 :(得分:1)

ln: Protocol error之所以发生是因为您必须是Windows Docker主机的管理员才能创建符号链接(即使您是Docker容器中的root用户,也不会这样)。

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

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