Как это обычно заведено, знакомство с системой начинается с момента, когда что-то сломалось. Так началось моё знакомство с Docker сегодня утром. Разберём простейшие команды, которые необходимы для работы с Docker.
Зачем вообще нужен Docker?
Одно из самых лучших применений Docker — это установка в него MySQL. Ведь на одну и ту же систему нельзя установить несколько MySQL серверов разных версий. А если устанавливать их в Docker контейнеры, то нет ограничений.
К примеру, можно установить сразу чистую MySQL (нескольких разных версий одновременно), MariaDB и PostgreSQL в разные контейнеры. И получать доступ к базам через разные порты. К примеру, MySQL будет в контейнере, который подключен к порту TCP 3306, MariaDB в порту 3310 и PostgreSQL в 3312 и т.д. Именно такое использование Docker можно обнаружить на виртуальных хостингах.
Выполнение простейшей bash команды внутри контейнера
Для начала научимся смотреть список контейнеров Docker, которые есть в системе. Делается это командой:
docker ps -a
В выводе можно увить список контейнеров, их статус, к каким портам они подключены. Нас интересует значение в столбце «CONTAINER ID». По этому значению попробуем обратиться к контейнеру и выполнить в нём произвольную bash команду. Для это используем такую конструкцию:
docker exec -it id_контейнера bash_команда
Попробуем выполнить команду вывода списка файлов «ls -l». В моём случае (у моего контейнера id = 24bab04158f3) команда получится такой:
docker exec -it 24bab04158f3 ls -l
Если на экране появился список фалов и папок в корневой директории контейнера, то всё сделано верно.
Включение/выключение контейнера
Теперь попробуем выключить контейнер:
docker stop id_контейнера
И включить контейнер:
docker start id_контейнера
Автоматическое включение Docker контейнера
Иногда Docker контейнеры выключаются. К примеру, если на системе обновить Docker, то все контейнеры выключатся, если не указана полтика их включения. Есть несколько разных политик. Попробуем применить политику «always» к контейнеру, которая заставляет его включаться, если он выключился (только если не вручную):
docker update —restart=always id_контейнера
А теперь попробуем отключить все политики рестарта, чтобы во время остановки контейнер продолжал быть выключенным:
docker update —restart=no id_контейнера
Есть ещё политика «on-failure», которая перезапускает контейнер, если он остановился, выдав ошибку («error code» будет больше нуля). А политика «unless-stopped» похожа на «always», но в отличии от «always» перезапуска при рестарте Docker не будет.
Насторйки Docker контейнера
Существует команда для проверки настроек Docker контейнера. К примеру, измените политику рестарта (из предыдущего параграфа) и сможете найти соответствующую строчку с внесёнными изменениями, посмотрев настройки контейнера. Делается инспекция такой командой:
docker inspect id_контейнера