Я не понимаю, что я не понимаю. Помогите разобраться пожалуйста:
Создать и запустить контейнер из готового образа: 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, базу прийдётся из контейнера сохранить. Чтобы это не делать можно мапить внешнюю директорию, файл или другой контейнер.
Другой контейнер для данных завётся data only container и про него написано в официальной документации http://docs.docker.com/userguide/dockervolumes/
Я правильно всё понимаю?
Вот теперь где я точно не понимаю?
Контейнер с данными должен быть запущен или просто может существовать?
Если он просто создан, и я запускаю контейнер mysql-server с ключём '--volumes-from mysql-data' то после замены контейнера с mysql данные пропадают, выходит они хранятся не в контейнере 'mysql-data'.
Получается контейнер должен быть запущенным демоном, так? Но на основе чего контейнер тогда создавать? На основе тогоже mysql? Но тогда в одну и туже директорию будут смотреть два mysql - собственно сервер и ненужный из контейнера с данными. На основе busybox? Тогда контенер не запустится демоном, он выполнится и завершится.
И, главное, почему, если контенеру указано, что данные надо брать из другого контенера, то он делает вид, что берёт, а на деле не берёт?
Или контейнеры не предназначены, чтобы компьютер выключался или перезагружался? Создал, поработал, удаляй?