2016-04-24 4 views
1

Я запускаю экземпляр докера, и мне бы хотелось to save my work - документы просто не на 100% понятны, как это сделать, поэтому я прошу здесь. Я открыл экземпляр Docker с помощью:Docker: Как сохранить исполняемый экземпляр?

docker run -it [public dockerhub name] 

Теперь я хотел бы сохранить всю свою работу на местном уровне, так что я могу вернуться к нему. Я не особо хочу проверять его на докер-хаб, если это не рекомендуется.

Вот что я сделал. Я открыл новую вкладку CLI докера и сделал docker ps там, где можно найти идентификатор экземпляра исполняемого докера. Затем на той же вкладке я попытался сделать это:

docker commit <docker-id> me/myinstance 

Это дало мне хеш-фиксацию.

Могу ли я теперь безопасно выйти из экземпляра работающего докера? Какую команду я буду использовать, чтобы открыть ее снова - мне нужно сохранить хеш фиксации, или я могу просто сделать docker run -it me/myinstance?

+0

Да, просто используйте эту команду, и она создаст новый контейнер из изображения, которое вы просто создаете с помощью любых изменений предварительного просмотра. – CodeNotFound

+0

@CodeNotFound thanks и могу ли я запустить его снова с помощью 'docker run -it me/myinstance'? – Richard

ответ

1

Изменения, внесенные в контейнер не, потерянные при выходе контейнера и контейнерах (контейнерах), не являются лицами без учета состояния, если только вы специально не отделили хранилище данных от приложения (путем установки папок из файловой системы хоста или отправки данных на база данных за пределами контейнера).

Чтобы увидеть ваши изменения, сохранившиеся в контейнере, запустите старый контейнер (docker start ~) вместо создания нового контейнера (docker run ~).

Это легче сделать, если вы называете свои контейнеры.

т.е.

docker run -it --name containerName imageName 

делать вещи в контейнере

docker kill containerName 
docker start containerName 

Вы увидите, что ваши изменения сохранялись в этом контейнере.

Вы также можете зафиксировать свой контейнер как изображение, которое может быть перенесено в реестр или экспортировано в файл.

0

Как docs упоминание:

  • Вы тянуть изображение из Докер ступицы
  • Вы запускаете этот образ на контейнер с помощью docker run <image>

При внесении изменений в контейнер, вы» не изменяя базовое изображение, поэтому эти изменения не сохраняются, если контейнер остановлен. Чтобы сохранить изменения, внесенные в контейнер, необходимо создать новое изображение с docker commit <container_id>

В примере, который находится на Docker документы:

# What containers are running on my system? 
$ docker ps 

ID     IMAGE    COMMAND    CREATED 
c3f279d17e0a  ubuntu:12.04  /bin/bash   7 days ago 
197387f1b436  ubuntu:12.04  /bin/bash   7 days ago 

# Create a new image called svendowideit/testimage, tag it as "version3" 
$ docker commit c3f279d17e0a svendowideit/testimage:version3 
f5283438590d 

# What images do I have on my system? 
$ docker images 
REPOSITORY      TAG     ID 
svendowideit/testimage   version3   f5283438590d 

Таким образом, вы сохранялись изменения в контейнере c3f279d17e0a , на новом изображении, называемом svendowideit/testimage:version3.

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

$ docker run svendowideit/testimage:version3 

Опять же, контейнеры являются лицами без гражданства. Любое изменение, которое вы делаете внутри контейнера, теряется, когда этот контейнер останавливается. Один из способов сохранения данных даже после того, как контейнер существует, составляет using volumes. Таким образом, ваш контейнер имеет доступ к каталогу в файловой системе хоста, которую вы можете читать и писать.

+0

В качестве предупреждения: имейте в виду, что 'docker commit' ** не применяется ** к любым томам, указанным в разделе' VOLUME' вашего 'Dockerfile', если только вы не сопоставили их с опцией' -v'. Я говорю от разочаровывающего опыта, пока не нашел это скрытым где-нибудь в официальной документации. – Marakai

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