LINUX.ORG.RU

Вопрос по docker data only container

 


0

1

Я не понимаю, что я не понимаю. Помогите разобраться пожалуйста:

Создать и запустить контейнер из готового образа: docker run
Остановить: docker stop
Запустить: docker start
Чтобы контейнер запустился и работал, т.е. docker run -d, нужно чтобы там был настроен какой-нибудь демон, иначе контейнер выполнит команду и завершиться.

Команда:

docker run -d --name mysql-server -p 3306:3306 -e MYSQL_ROOT_PASSWORD=qwe123 mysql
запустит контейнер с mysql, которым можно будет даже попользоваться.
База будет жить внутри контенера. При замене контейнера, например апдейте mysql, базу прийдётся из контейнера сохранить. Чтобы это не делать можно мапить внешнюю директорию, файл или другой контейнер.
Другой контейнер для данных завётся data only container и про него написано в официальной документации http://docs.docker.com/userguide/dockervolumes/
Я правильно всё понимаю?

Вот теперь где я точно не понимаю?

Контейнер с данными должен быть запущен или просто может существовать?

Если он просто создан, и я запускаю контейнер mysql-server с ключём '--volumes-from mysql-data' то после замены контейнера с mysql данные пропадают, выходит они хранятся не в контейнере 'mysql-data'.
Получается контейнер должен быть запущенным демоном, так? Но на основе чего контейнер тогда создавать? На основе тогоже mysql? Но тогда в одну и туже директорию будут смотреть два mysql - собственно сервер и ненужный из контейнера с данными. На основе busybox? Тогда контенер не запустится демоном, он выполнится и завершится.
И, главное, почему, если контенеру указано, что данные надо брать из другого контенера, то он делает вид, что берёт, а на деле не берёт?

Или контейнеры не предназначены, чтобы компьютер выключался или перезагружался? Создал, поработал, удаляй?

Срань господня, по-человечески напиши что хотел!

dvrts ★★★
()

Из всего сгенерированного бреда я увидел только один конструктивный вопрос -

Или контейнеры не предназначены, чтобы компьютер выключался или перезагружался? Создал, поработал, удаляй?

Нет, предназначены, просто не запускай их в интерактивном режиме.

dvrts ★★★
()
Ответ на: комментарий от invokercd

А нет-ли готового образа в облаке докера, чтобы одной коммандой создать контейнер для данных?

Barlog_M
() автор топика
Ответ на: комментарий от invokercd

Да вот захотелось в контейнере держать, чтобы если что переносить как и остальные контейнеры. Опять же отрицание лёгкого пути. :)

На самом деле мне больше интересно - это я что-то не так делаю или не так понял, или оно так и должно молча не работать?

Barlog_M
() автор топика

Data-контейнер не обязательно должен выполняться, чтобы в него можно было писать. В Dockerfile для data-контейнера долна быть строка VOLUME (VOLUME /var/lib/mysql). У меня все работает :-)

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)
Ответ на: комментарий от Black_Roland

Благодарю. Ваш ответ, о том, что всё должно работать, мне действительно помог. Я с докером экспериментировал в CoreOS. Взял ubuntu и всё заработало. Теперь буду пытаться осознать CoreOS.

Barlog_M
() автор топика

Я разобрался. Дело оказалось в том, что контейнер с данными я создавал с помощью команды create, а само хранилище в /var/lib/docker/vaults создаётся только при запуске контейнера хотя бы один раз.

И дело тут не в CoreOS :)

Всем большое спасибо за помощь.

Barlog_M
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.