Начало работы с Docker Compose в Linux
Docker Compose — это инструмент для определения и запуска многоконтейнерных приложений Docker в Linux. В Compose мы используем файл YAML для настройки служб нашего приложения. А дальше создаём и запускаем все сервисы из конфигурации одной командой. Вот простая графическая иллюстрация, показывающая, как работает компоновка Docker.
Docker Compose представляет собой трехэтапный процесс:
- Во-первых, нам нужно определить среду приложения с помощью Dockerfile, чтобы ее можно было повторно использовать.
- Во-вторых, мы определяем службы, составляющие приложение, в docker-compose.yml, чтобы их можно было запускать вместе в изолированной среде.
- Наконец, мы запускаем команду docker-compose up, и Compose запустит и запустит все ваше приложение.
Начало работы с Docker Compose в Linux
Docker Compose можно установить двумя способами. Инструкции по установке можно найти в разделе "Установка Docker Compose" по следующим ссылкам.
- Как установить Docker в Ubuntu
- Как установить Docker в CentOS
После установки проверьте версию Docker Compose с помощью команд:
docker-compose -version
Или,
docker-compose -v
Или,
docker-compose --version
Чтобы получить помощь, просто запустите:
docker-compose -help
Эта команда выведет список команд, которые может выполнять Docker Compose.
Теперь давайте в качестве примера возьмем простой файл компоновки Docker. Вот содержимое моего файла компоновки.
Вышеупомянутый файл компоновки докера — это минимальный файл для понимания основного содержимого внутри файла компоновки.
Мы можем проверить достоверность файла с помощью команды:
docker-compose config
Если вы укажете неверную версию в файле компоновки Docker, вы получите сообщение об ошибке.
Теперь давайте запустим файл компоновки с помощью команды:
docker-compose up -d
Он запустит все службы с помощью одной команды.
Чтобы просмотреть список запущенных контейнеров, созданных с помощью файла Compose, запустите:
docker-compose ps
Мы можем закрыть приложение в любой момент с помощью следующей команды:
docker-compose down
Мы также можем назначить nginx другой порт, например 8181.
Для этого просто определите порт в файле компоновки, как показано на следующем рисунке.
Теперь nginx доступен через порт 8181. Давайте запустим контейнер и проверим, работает ли Nginx на порту 8181.
Откройте браузер и проверьте, работает ли он на порту 8181.
Если вы хотите масштабировать сервис, вы можете сделать это с помощью команды:
docker-compose up -d --scale database=3
Чтобы отобразить запущенные службы, запустите:
docker-compose top
Чтобы остановиться, начните. перезапустите всю службу сразу, команды будут такими:
docker-compose stop
docker-compose start
docker-compose restart
Мы можем просмотреть журналы служб с помощью команды:
docker-compose logs
Сеть в docker-compose
Docker Compose по умолчанию настраивает единую сеть для вашего приложения. Каждый контейнер присоединяется к сети по умолчанию, и контейнеры смогут взаимодействовать в этой сети по умолчанию.
Однако вы можете создать новую сеть с помощью Compose, если вам не нужна сеть по умолчанию.
Для целей данного руководства я использую следующие три файла:
- Докерфайл
- docker-compose.yml
- сервер.py
Вот содержимое Dockerfile:
Содержимое docker-compose.yml:
Содержимое server.py:
Теперь создайте образ с помощью команды:
docker-compose build
После завершения сборки вы увидите следующий результат:
Как видите, изображение успешно построено. Вы можете проверить это с помощью команды:
docker images
Как видно из приведенного выше вывода, создается образ Docker с именем image1.
Теперь запустите файл компоновки:
docker-compose up -d
Проверьте, создана ли новая сеть или нет, с помощью команды:
docker network ls
На приведенном выше снимке экрана мы можем подтвердить, что была создана новая сеть с именем dc_network_my-network.
Давайте проверим, запущен ли контейнер или нет, с помощью команды «docker ps»:
docker ps
Да, контейнер работает!
Наконец, запустите файл кода приложения (server.py) с помощью команды Curl:
curl localhost:15001
Или,
curl 10.26.35.244:15001
Мы получаем выходные данные — Hello World с узла 1!, которые записаны в файле server.py. Это значит, что это работает!
Рекомендуем прочитать:
- Преобразовать команды запуска Docker в файлы Docker-Compose
- Объяснение концепций сети Docker
- Объяснение томов Docker на примерах
- Как автоматически обновлять работающие контейнеры Docker
- ctop — инструмент мониторинга командной строки для контейнеров Linux
- Portainer – самый простой способ управления Docker
- PiCluster — простое веб-приложение для управления Docker
- Dockly – управление контейнерами Docker из терминала
Об авторе:
Дхрув Тивари — инженер DevOps, который любит автоматизировать процессы, работать с Linux в больших масштабах и мечтает о том дне, когда системы станут достаточно умными, чтобы им никогда не приходилось входить в систему Linux. Путешествие CI/CD от исходного кода до развертывания кода в производство.
Ресурс:
- Документация Docker Compose