2014-10-24 7 views
2

Я пробовал это с любым количеством способов, и он все еще не работает. DOC, которые я прочитал, показывают, что это невозможно, но это беспокоит меня, поэтому я продолжаю копать. Вот установка:docker commit data container для частного реестра

  • У меня есть контейнер данных
    • docker build -t databox .
    • docker run -d -v /data -v /data/db --name databox databox
    • (/ данные и/данные/дб тома в контейнере Databox, что я делю)
  • У меня есть тестовый контейнер для доступа к контейнеру данных
    • docker run --volumes-from databox -it --name bbdb busybox /bin/sh
    • я редактировал файл в /data и /data/db каталогов

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

Мой сервер реестра находится на 127.0.0.1:5000. вот мой SAVE:

docker tag databox 127.0.0.1:5000/databox:latest 
docker commit databox 127.0.0.1:5000/databox:latest 
docker push 127.0.0.1:5000/databox:latest 

моей восстановить lools как:

docker run -d -v /data -v /data/db --name databox databox 

Когда я выполнить восстановление изменений, которые я сделал не хватает. Когда я смотрю на изображения и контейнеры вместе с историей докера, я не вижу своих прав. Я попытался изменить контейнер databox в разных папках, и все они восстанавливаются до исходного состояния.

hmmmm .... Что это значит?

ответ

3

Что вам не хватает, так это то, как работают точные данные Docker.

Тома данных - это места в контейнерах, которые не являются частью файловой системы на уровне контейнеров. Точки данных также не являются частью изображений Docker. Фактически объемы данных хранятся в /var/lib/docker/volumes.

Докер команды, такие как export, cp, save, diff или commit не имеют доступа к объемам данных.

Правильный способ резервного копирования данных из тома данных Docker заключается в том, чтобы запустить контейнер Docker, имеющий доступ к этому тому данных, и запустить команду из контейнера для создания архива данных. Для получения дополнительной информации по этому вопросу читайте Docker user guide on managing data.

+0

Вот чего я боялся. Спасибо! – Richard

2

Хех - Я хотел бы поделиться, как я достиг этого.

Я хотел бы иметь объем данных postgres, предварительно заполненный для контейнера dev.

  1. Создать Databox контейнер (пустой, но заявленный объем в Dockerfile)
  2. Запускает bbdb контейнера с --volumes-из DataBox
  3. Изменить Databox объемного содержания контейнера, как вы хотите
  4. Экспорт/Резервное копирование содержимого DataBox (Backup, restore, or migrate data volumes)
  5. Воссоздать контейнер Databox но ADD предыдущего резервного копирования на/

Изображение databox теперь имеет нужный контент. Я переместил его в локальный реестр и вытащил его, прежде чем запустить контейнер bbdb (equiv) и использовать его как ссылку -volumes-from.