`cp` vs`rsync`比较快

时间:2017-09-09 21:35:12

标签: linux macos docker rsync cp

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

1 个答案:

答案 0 :(得分:1)

这是不允许的,它不会是

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

  

我们不允许这样做,因为它不可重复。机器上的符号链接与我的机器不同,相同的Dockerfile会产生两种不同的结果。对/ etc / paasswd添加符号链接会导致问题,因为它会链接主机文件而不是本地文件。

如果您有每个容器中需要的公共文件,那么我会将所有这些文件放在共享映像中并使用docker multi build options

FROM mysharedimage as shared

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

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

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

ln /source/file /dest/file

所以你的电话真的是你想要做的以及你想要的。