`cp` vs `rsync` vs 更快的东西

`cp` vs `rsync` vs something faster

我正在使用 Docker 并且 Docker 无法将 COPY 符号链接文件放入图像中。但是符号链接的文件不在 'build context' 中。所以我打算用 cp 将它们复制到构建上下文中,但这真的很慢。有没有什么方法可以在磁盘上的两个不同位置共享文件,而不必复制它们并且不使用符号链接?

这是不允许的,也不会

https://github.com/moby/moby/issues/1676

We do not allow this because it's not repeatable. A symlink on your machine is the not the same as my machine and the same Dockerfile would produce two different results. Also having symlinks to /etc/paasswd would cause issues because it would link the host files and not your local files.

如果你有每个容器都需要的公共文件,那么我会将它们全部放在共享映像中并使用 docker 多构建选项

FROM mysharedimage as shared

FROM alpine
COPY --from=shared /my/common/stuff /common
....

同样仍然不是最优雅的解决方案,但是,因为当您 docker 构建时,当前上下文被压缩并发送到 docker 守护程序,软链接将不起作用。

您可以创建硬链接,但硬链接会指向 inode,并且不会向您显示它们指向的文件。其他软链接会告诉您它们指向的位置,但构建不会发送它们。

ln /source/file /dest/file

所以你的电话真的是你想做什么,你想怎么做。