Я использую Docker, а Docker не может COPY
файлы с символической связью в изображение. Но файлы, которые связаны символическими ссылками, не находятся в «контексте сборки». Поэтому я собирался скопировать их в контекст сборки с помощью cp, но это очень медленно. Есть ли способ поделиться файлами в двух разных местах на диске без необходимости их копирования и без использования символических ссылок?
Вы можете скопировать с помощью reflinks `cp --reflink = always ', что создаст дифференциальный файл, ссылающийся на статический оригинал. Если вы сделаете это, вы, вероятно, захотите сделать оригинал неизменяемым, чтобы копия с переадресацией не была повреждена.
Или вы можете использовать что-то вроде снимков LVM для быстрого создания / клонирования файловых систем, которые отличаются от оригинала. Тонкий LVM был бы лучше всего для этого подхода, и вы могли бы достичь этого, установив сам моментальный снимок, а не используя моментальный снимок как способ отката исходного тома, как мы традиционно делаем. Использование LVM будет безопаснее, чем копии с переадресацией ссылок, поскольку изменения в оригинале корректно обрабатываются путем обновления всех снимков с обновлениями источника.
В-третьих, вы можете делать снимки подтомов BTRFS. Это лучшее из обоих миров, поскольку это механизм моментальных снимков на уровне файловой системы или файлов, который не требует, чтобы вы управляли обоими файлами и менеджером томов по отдельности. Этот процесс был бы очень похож на LVM, поскольку вы можете монтировать подтомы где угодно.
И наконец, рассматривали ли вы NFS? Указание соединения NFS в образе контейнера - хороший способ получить общее хранилище.