2015-07-18 2 views
0

Я использую команду:не удалось сохранить файл в Докер изображения после «докер совершить»

docker run -it -v /myhostpath:/dockerpath $container 

так я получаю отображение хоста директории на Docker директорию, и я вижу файлы разделяемые оба директора.

После этого я выхожу из контейнера, фиксирую и сохраняю изображение. Однако, когда я снова открываю контейнер, общие файлы пропадают.

Может ли кто-нибудь сказать мне, что происходит? Благодаря!

ответ

0

Опция -v похожа на команду mount для подключения внешней файловой системы. Каталоги, отображаемые в контейнер с -v, не находятся в файловой системе контейнера. Поэтому при внесении изменений в файловую систему контейнера на новое изображение эти внешние файлы не включаются.

Если вы хотите скопировать некоторые внешние файлы в контейнер, вам нужно будет использовать -v для временного монтирования каталога, а затем использовать команду cp для копирования в локальный в контейнер каталог, а затем фиксацию.

Или вы могли бы включать в себя файлы с помощью ADD или COPY в вашем Dockerfile

Если внешние файлы можно рассматривать как существенный ввод или вывода для контейнера, который отделен от контейнера и может понадобиться в другом месте (файлы журналов, результаты вычислений, данные базы данных и т. д.) или должны храниться в секрете, тогда вы не должны копировать их в контейнер. Вместо этого продолжите использование -v для монтирования этого каталога в контейнере.

+0

Спасибо! Я нахожу, что только когда я cp файлы в/usr/local, тогда файлы могут быть сохранены после моего выхода. Даже если я cp файлы в/root, он не будет работать. Почему это?? – James

+0

@James '/' является * корневым каталогом *. Я не знаю, что означает '/ root' (* root-slash-root *). Я предполагаю, что это точка монтирования для корневого диска хоста. – jpaugh

+0

'/ root' обычно является домашним каталогом пользователя root. – Paul

Смежные вопросы