docker 不识别软链接吗

发布网友 发布时间:2022-04-25 14:27

我来回答

1个回答

热心网友 时间:2023-10-09 02:51

本质上 symlink 只是一个文件或目录的"链接"(anchor),实际上,早期的 symlink 实现中,一个 symlink 就是包含了一个路径名的普通文件。

所以,一个 symlink 在容器和宿主机上指向的实际目标很可能是不同的,比如通过以下脚本新建的容器:

```
mkdir volume
ln -s / volume/root
docker run --rm -ti -v `pwd`/volume:/data -w /data busybox sh
```

在宿主机,和容器内分别执行`ls root`, 看到的内容是不同的,分别是宿主机和容器的根目录。

如果你希望 symlink 在容器和宿主机上指向的目标一致,靠谱一点的办法是将目标文件放在 volume 内,而且采用相对路径的方式创建 symlink, 比如:

```
mkdir volume
cd volume
touch target
ln -s ./target symlink1
ln -s `pwd`/target symlink2
docker run --rm -ti -v `pwd`:/data -w /data busybox sh
```

在以上脚本建立的容器内执行` cat /data/symlink1`和`cat /data/symlink2`,会发现前者能正确访问到文件,后者则会报错

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com