2016-11-18 3 views
8

У меня уже есть контейнер докеров. Я внес некоторые изменения в конфигурации, допустим, добавили некоторую информацию о хосте в/etc/hosts внутри контейнера. Как сохранить сохраненные изменения, так что в следующий раз, когда я открою интерактивную оболочку в контейнере, мне больше не придется делать то же самое? На данный момент я создал мини-скрипт как addhosts.sh, как показано ниже внутри контейнера, и должен запускать его каждый раз.Сценарий запуска для контейнера докера

echo "1.2.3.4 server1.example.com gluster1" >> /etc/hosts 
echo "5.6.7.8 server2.example.com gluster2" >> /etc/hosts 

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

ответ

8

Вы можете зафиксировать изменения, сделанные вами по:

Краткое командное Справочно:

docker commit <container id or name> <repository name>/<your image name>:<tage aka version> 

Пример:

docker commit c3f279d17e0a svendowideit/testimage:version3 

Полный Ссылка:

Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 

Create a new image from a container's changes 

Options: 
    -a, --author string Author (e.g., "John Hannibal Smith <[email protected]>") 
    -c, --change value  Apply Dockerfile instruction to the created image (default []) 
     --help    Print usage 
    -m, --message string Commit message 
    -p, --pause   Pause container during commit (default true) 

Затем вы можете использовать docker images для просмотра вашего нового изображения после совершения.

Чтобы запустить контейнер из вашего нового изображения:

docker run -d svendowideit/testimage:version3 <optional startup command>

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

+0

Спасибо за быстрый ответ. Является ли он также применимым к выходящим контейнерам? Coz мой контейнер вышел. Я сделал фиксацию докера для контейнера, а затем вышел, начал и привязал его. Но я не вижу, чтобы мои конфигурации были неповрежденными. –

+0

Как начать контейнер? Вы должны включить созданную версию.Что касается примера 'Докер запустить svendowideit/testimage: version3' –

+1

Выполнив ниже: ' Докер начать 44372579f2ea' 'Докер присоединять 44372579f2ea' –

2

Используйте docker commit, чтобы сделать снимок вашего контейнера.

Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 

Create a new image from a container's changes 

Options: 
    -a, --author string Author (e.g., "John Hannibal Smith <[email protected]>") 
    -c, --change value  Apply Dockerfile instruction to the created image (default []) 
     --help    Print usage 
    -m, --message string Commit message 
    -p, --pause   Pause container during commit (default true) 

Example: docker commit c3f279d17e0a svendowideit/testimage:version3

Есть взгляд на https://docs.docker.com/engine/reference/commandline/commit/

К запустить снимок грузчиком контейнера добавить версию для запуска команды. Что касается примера выполнения

docker run svendowideit/testimage:version3

4

Предполагая, что вы не хотите, чтобы сохранить изменения в новый образ:

docker exec -it container_id echo "1.2.3.4 server1.example.com gluster1" >> /etc/hosts 
docker exec -it container_id echo "5.6.7.8 server2.example.com gluster2" >> /etc/hosts 

Это будет подключаться к контейнеру, выполните команду и выйти, не убивая контейнер.

Обратите внимание на разницу между следующими:

docker exec -it container_id ... = does not kill the container. 
docker run -it container_id ...= kills the container 
Смежные вопросы