Как сохранить изменения в boot2docker

Я новичок в Docker и столкнулся с проблемой, решения которой не нашел.

Я на Mac, поэтому мне приходится использовать Boot2Docker в качестве среды. Я делаю все свои вещи внутри виртуальной машины, используя boot2docker ssh, чтобы максимально имитировать «реальную» ситуацию.

Моя проблема в том, что как только я закрываю boot2docker с выключенным boot2docker или останавливаюсь, я теряю все свои изменения... Как я могу сохранить свои изменения?

Что я сделал, так это создал несколько каталогов, например /opt/sites, и добавил некоторый код в .profile. Все исчезло, когда я снова запускаю boot2docker.

Я пытался поместить все в /Users... поскольку boot2docker 1.3 и выше автоматически монтирует это место, но затем у меня возникают проблемы с использованием --volumes в некоторых контейнерах (точнее, в контейнерах MySQL...)

Я думаю, что могу решить проблему хранения данных (проблема --volumes), но где я могу разместить определение PATH и других переменных среды?

Я, вероятно, что-то неправильно понимаю, поэтому, пожалуйста, направьте меня в правильном направлении ;-)


person Thomas Rambrant    schedule 14.01.2015    source источник
comment
Вопрос (может я не в теме). Вы ведь тоже создаете докер-контейнеры, верно? Именно здесь вы монтируете тома и настраиваете MySQL и т. д. Boot2Docker — это просто небольшая виртуальная машина Linux, которая используется, поскольку Mac OSX — это не Linux.   -  person wassgren    schedule 14.01.2015
comment
Я создаю контейнеры и монтирую тома. Но когда я сопоставляю том для своего контейнера MYSQL для хранения базы данных (/Users...), он терпит неудачу... Если я монтирую том на /opt/sites/mysql/data, все работает. Я пытаюсь создать среду, в которой я использую сценарии bash для настройки, создания, запуска, запуска и остановки групп контейнеров. Я хотел бы установить переменную PATH, чтобы указать эти сценарии. У меня есть сценарии в /Users... так что они в безопасности, но как мне установить переменную PATH внутри виртуальной машины на постоянной основе?   -  person Thomas Rambrant    schedule 14.01.2015
comment
Хорошо, а можешь показать мне, что ты делаешь, чтобы смонтировать его?   -  person wassgren    schedule 14.01.2015
comment
Спасибо за попытку помочь мне, я очень ценю это docker run \ --name=redmine-mysql \ -d \ --env-file $SITE_ROOT/redmine/mysql.env \ -v $SITE_ROOT/redmine/mysql:/var /lib/mysql \ sameersbn/mysql Когда SITE_ROOT указывает на каталог в /Users, у меня возникают проблемы с MySQL... Если я указываю на /opt/sites в среде boot2docker (boot2docker ssh), тогда все работает. Это одна сторона проблемы, а другая заключается в том, что все в среде boot2docker исчезнет, ​​если я остановлюсь и запущу... Разве в виртуальной машине не должно быть постоянных вещей? Разве вы не можете запустить и остановить его, не потеряв при этом все, что в нем есть?   -  person Thomas Rambrant    schedule 14.01.2015
comment
Пытался научиться форматированию, но прервался... docker run \ --name=redmine-mysql \ -d \ --env-file $SITE_ROOT/redmine/mysql.env \ -v $SITE_ROOT/redmine/mysql:/var/lib/mysql \ sameersbn/mysql Читается немного легче...   -  person Thomas Rambrant    schedule 14.01.2015


Ответы (3)


После внесения изменений в образ boot2docker выполните команду «boot2docker save». Вы должны увидеть, что ваши изменения сохраняются после перезапуска boot2docker.

person andy.jackson    schedule 04.03.2015
comment
К сожалению, docker-machine save нет. См. мой ответ для решения. - person pavelst; 04.05.2016


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

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

person Hy L    schedule 14.01.2015
comment
Проблема не в контейнерах. Я знаю, что они без гражданства. У меня проблема со средой boot2docker, я теряю все изменения, которые я сделал, как только я останавливаюсь и запускаю... Я могу частично решить проблему, используя автомонтированную файловую систему в /Users, но как мне сохранить изменения при запуске скрипты, .profile и т.д... - person Thomas Rambrant; 15.01.2015
comment
насколько я знаю, файл /etc/hosts в докере не сохраняется. Если вы внесли изменения в /etc/hosts, они исчезнут после перезапуска контейнера. Я думаю, то же самое происходит с .profile? - person Hy L; 15.01.2015