Опция -v
похожа на команду mount
для подключения внешней файловой системы. Каталоги, отображаемые в контейнер с -v
, не находятся в файловой системе контейнера. Поэтому при внесении изменений в файловую систему контейнера на новое изображение эти внешние файлы не включаются.
Если вы хотите скопировать некоторые внешние файлы в контейнер, вам нужно будет использовать -v
для временного монтирования каталога, а затем использовать команду cp
для копирования в локальный в контейнер каталог, а затем фиксацию.
Или вы могли бы включать в себя файлы с помощью ADD
или COPY
в вашем Dockerfile
Если внешние файлы можно рассматривать как существенный ввод или вывода для контейнера, который отделен от контейнера и может понадобиться в другом месте (файлы журналов, результаты вычислений, данные базы данных и т. д.) или должны храниться в секрете, тогда вы не должны копировать их в контейнер. Вместо этого продолжите использование -v
для монтирования этого каталога в контейнере.
Спасибо! Я нахожу, что только когда я cp файлы в/usr/local, тогда файлы могут быть сохранены после моего выхода. Даже если я cp файлы в/root, он не будет работать. Почему это?? – James
@James '/' является * корневым каталогом *. Я не знаю, что означает '/ root' (* root-slash-root *). Я предполагаю, что это точка монтирования для корневого диска хоста. – jpaugh
'/ root' обычно является домашним каталогом пользователя root. – Paul