"Docker быстрый старт"

Сегодня я хотел рассказать как пользоваться докером. Установка его вполне тривиальна и подробно расписана тут. Выбираете ОС, жмакаете и дальше действуйте по инструкции.

Попробуем для начала запустить контейнер с mysql. Чтобы получить образ контейнера можно воспользоваться 2 путями:

  • скачать его из репозитория явно, командой docker pull <image_name>'
  • либо запустить контейнер командой docker run […] <image_name> […] в этом случае образ контейнера скачается из репозитория перед запуском

Из вышесказанного очевидно что образы контейнеров хранятся в общем репозитории. А именно здесь https://registry.hub.docker.com/. В этом хранилище вы можете иметь сколько угодно публичных образов и только один приватный. Хотите больше приватных, платите денюжку. Для нашего примера мы возьмем готовый образ любезно подготовленный разработчиками Docker с названием dockerfile/mysql

Запускаем следующую команду: docker run -d --name mysql -p 3306:3306 dockerfile/mysql

в ответ вы получите нечто вроде: 9452a8c5ac34665262a8f9031399e2d0afefdbbc4282f8ad60ecffbf0860b9a0

это хэш запущенного контейнера. Чуть позже объясню что же такое мы запустили

запускаем:

docker ps -l

в ответ видим:

1
2
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS                    NAMES
9452a8c5ac34        dockerfile/mysql:latest   "mysqld_safe"       14 seconds ago      Up 13 seconds       0.0.0.0:3306->3306/tcp   mysql

тут все понятно. Команда ps выводит список работающих контейнеров, а флаг -l предписывает вывести информацию только о последнем запущенном контейнере. В столбце COMMAND это та команда которая выполняется в контейнере по умолчанию. Столбец PORTS показывает на каком порте и хосте доступен процесс бегущий в контейнере, в нашем случае это процесс mysqld_safe на хосте 0.0.0.0 порт 3306

Тут есть нюансы, если вы к примеру воспользовались приложением boot2docker для установки docker на вашу ОС (windows, mac и т.д) то локальным хостом в нашем случае будет не 0.0.0.0 а тот который выделен для boot2docker. Узнать IP по которому будет доступен наш контейнер можно в этом случае командой boot2docker ip. Соответственно в нашем случае подключиться к mysql можно будет по <boot2docker ip>:3306

Теперь разберем команду : docker run -d --name mysql -p 3306:3306 dockerfile/mysql. Команда run запускает контейнер, флаг -dговорит что контейнер должен работать в режиме detached, т.е в бекграунде. Далее флагом —name мы присваиваем имя контейнеру, если мы это не сделаем, это сделает за нас docker (имена он присваивает порой забавные). Далее флаг -p говорит опубликовать на ip по умолчанию (0.0.0.0) хоста (там откуда вы запускаете docker) на порту 3306 опубликовать то что происходит на порту контейнера 3306. Формат для флага -p следующий ip:hostPort:containerPort либо ip::containerPort либо hostPort:containerPort либо containerPort. Список всех флагов команды run и их краткое описание можно получить запустив docker run --help

Собственно все, контейнер работает к нему можно подключится, и использовать как базу данных. Чтобы остановить контейнер нужно воспользоваться командой docker stop mysql чтоб удалить контейнер нужно запустить docker rm mysql. Как создать свой образ контейнера залить его в репозиторий и слинковать его с нашим контейнером с базой данных, я расскажу в следующий раз.