Изучаем докер контейнеры

Сегодня хотелось бы поговорить, про очень популярный сервис — Docker. Как говорится, лучше поздно, чем никогда). Уже многие оценили пользу и возможности, этого замечательного сервиса. Это быстрое развертывание, производительность, удобство администрирования (хотя кому как!). 

     И так закончим с небольшим ликбезом и перейдем сразу к практике. Так будет более понятно…

Первое, что необходимо сделать установить Докер. Сделать это можно двумя способами. Вообще как ставить сервис написано в официальной документации. В качестве примера возьмем ОС Ubuntu 22.04.

Первый способ вручную, последовательно вводя команды.

# Add Docker’s official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg —dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo
«deb [arch=»$(dpkg —print-architecture)» signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
«$(. /etc/os-release && echo «$VERSION_CODENAME»)» stable» |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Далее
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Второй способ более предпочтительный. Ставить будем с помощью скрипта.

curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

После установки проверим работу докера введя команду sudo docker run hello-world. Если никаких ошибок не возникло, то увидим простой текст. 

Для тех, кто хочет подробно разобраться с docker советую посмотреть множество роликов в интернете. Где Вам подробно расскажут, что и как использовать.

Отлично допустим все получилось приступаем к установке наших сервисов докер. Хочу сразу отметить, что мы будем использовать docker compose, так как этот формат предпочтительнее для меня и в целом, позволяет создавать полноценный сервисы со сложной структурой и простым администрированием. Первое, что необходимо сделать это определиться с каталогом для Ваших сервисов. Для примера будем использовать  /var/www

В качестве примера возьмем WordPress. В нашей директории создаем папку имя произвольное например botinok.ru (это произвольный пример). И так переходим в каталог

cd /var/www/botinok.ru

Создаем docker-compose.yml имя стандартное по умолчанию (Но можно создать произвольное имя, например botinok.yml, в общем на вкус и цвет, как говорится)

Кстати можно и не создавать отдельные папки на каждый проект , а писать все в одной . Но этого делать не рекомендую, особенно для сложных проектов.

Более подробно можно посмотреть на hub.docker.com. Так же базу данных можно вынести в отдельный конфиг, это подойдет, когда много контейнеров запускают в одной выделенной сети докер.

Перед запуском создадим сеть mynet

docker network create mynet

labels относится к системе Traefik (прокси, об этом в другой статье). Теперь пробуем запустить наш контейнер

docker compose up -d

Так же можно запустить и без -d. Тогда Вы сможете отслеживать все, что происходит при запуске Вашего контейнера и при обращении к нему. Это удобно при разработке и тестировании.

Можем проверить запущен ли наш контейнер, для этого запустим команду.

docker ps

Если ввести команду
docker ps -a

Увидим все контейнеры, запущенные и остановленные

Теперь зайдем в браузер и наберем адрес 192.168.1.5:8081 (порт мы указали в docker-compose.yml в секции ports). Если всё сделано правильно — увидим стандартный мастер установки WordPress.

Пару полезных команд напоследок, которые пригодятся в повседневной работе с docker compose:

docker compose logs -f          # смотрим логи контейнеров в реальном времени
docker compose stop             # останавливаем сервисы, не удаляя контейнеры
docker compose down             # останавливаем и удаляем контейнеры (volumes останутся)
docker compose restart          # перезапуск

На этом на сегодня всё. Мы установили Docker, разобрались с docker compose и подняли рабочий контейнер с WordPress и MySQL в связке. В следующих статьях покажу, как прикрутить Traefik в качестве реверс-прокси с автоматическими SSL-сертификатами, чтобы поднимать сервисы сразу с доменом и https, без ручного пробрасывания портов.