linux中软连接为什么在docker内无法访问?

1111.png

如上图所示,upload目录使用了软连接,并且权限都加上了,但是cd upload报错 No such file or directory,请问是什么问题?

阅读 14.2k
2 个回答

为了每个问题都有一个回答,问题解决了我把过程贴上。

kumfo:首先你 cd /data/maccms/cms/upload 看看能进去吗

夜之子:@kumfo 忘记说了,这是在docker容器内访问的,无法进入upload目录,但是如果在外部宿主机上访问,是可以进入upload的,按理说权限都加了,在docker容器内应该也是可以访问的才对。。。 cd /data/maccms/cms/upload是可以进入的

kumfo:@夜之子 你主机的这个目录挂载到docker了吗?

夜之子:@kumfo 挂载的是upload父层目录

kumfo:@夜之子 那应该没问题,另外就是刚才我说的,你在docker里能直接进入到这个目录吗?

夜之子:@kumfo 哦,docker竟然能进入/data/maccms/cms/upload,可我挂载的应该是upload才对

kumfo:@夜之子 那就是你的问题了😂

夜之子:@kumfo docker挂载的是/upload,软链接到/data/maccms/cms/upload,但是docker/upload无法访问,而/data/maccms/cms/upload却能访问到,这个要怎么处理才能让实际挂载到/upload呢?

kumfo:@夜之子 你的docker目录挂载语句发一下看看?

夜之子:

volumes:
      - /data/maccms/cms2:/data/wwwroot

我这个很简单,upload就放在/data/wwwroot目录下

kumfo:@夜之子 你都挂载到 docker 的/data/wwwroot 了,那么你要访问的话,在docker里直接cd /data/wwwroot就可以了呀,你在 docker 里也只能访问主机目录的 /data/maccms/cms2目录。

夜之子:@kumfo 非常感谢,我把软链接删除了,单独对/upload进行了挂载到实际的目录,问题解决了。再次感谢!

kumfo:@夜之子 我也只是站在外人的角度和你讨论,然后顺带帮你理清了思路,其实没啥的,问题解决了就行。

我也遇到了同样的问题,找到原因了,是因为docker容器误以为软连接指向的文件是容器内的文件,而在外部宿主机bash下创建的软连接实际指向宿主机的目录,应该在docker-compose.yml文件volumes中把宿主机软连接目录也映射上

volumes:
      - /data/maccms/cms2:/data/wwwroot
      - /data/maccms/cms2/upload:/data/maccms/cms2/upload  # 新增宿主机软连接的映射
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏