我正在使用 Docker,Docker 无法COPY
将文件符号链接到镜像中。但符号链接的文件不在“构建上下文”中。所以我打算用 cp 将它们复制到构建上下文中,但这真的很慢。有没有办法在磁盘上的两个不同位置共享文件,而不必复制它们,也不使用符号链接?
答案1
您可以使用 reflinks‘cp --reflink=always’进行复制,这将创建一个引用静态原始文件的差异文件。如果这样做,您可能希望使原始文件不可变,以便重新链接的副本不会损坏。
或者,您可以使用 LVM 快照之类的东西来快速创建/克隆与原始文件系统不同的文件系统。精简 LVM 最适合这种方法,您可以通过安装快照本身来实现这一点,而不是像我们传统上那样使用快照来回滚原始卷。使用 LVM 比重新链接的副本更安全,因为可以通过使用原始更新更新所有快照来优雅地处理对原始文件系统的更改。
第三,您可以快照 BTRFS 子卷。这是两全其美的,因为它是一种文件系统或文件级快照机制,不需要您分别管理文件和卷管理器。这个过程与 LVM 非常相似,因为您可以将子卷挂载到您想要的任何位置。
最后,你考虑过 NFS 吗?在容器镜像中指定 NFS 连接是获取共享存储的好方法。