Что такое Docker? Bash команды в контейнере

Как это обычно заведено, знакомство с системой начинается с момента, когда что-то сломалось. Так началось моё знакомство с 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_контейнера



2020-02-05T12:50:29
Интернет