Docker compose — это простой, но мощный инструмент, который используется для запуска нескольких контейнеров как одного сервиса. Например , предположим, что у вас есть приложение, которому требуется веб-сервер и службы базы данных. В этом случае вы можете создать один файл (docker-compose.yml) , который будет создавать оба контейнера как один сервис без запуска каждого отдельно.
О том как установить CentOS8, Вы можете прочитать тут.
Вас интересует что такое Docker? Вам сюда.
А пример установки Docker, мы привели здесь.
Как работает Docker Compose
- Используйте yaml файл для настройки ваших служб и приложений (
docker-compose.yaml
) - Вы можете запустить все сервисы одной командой (
docker-compose up
) - Вы можете остановить все сервисы одной командой (
docker-compose down
) - Возможность расширения конкретных сервисов и приложений при необходимости.
- работает во всех средах: производство, подготовка, разработка, тестирование, а также рабочие процессы CI
Шаг 1 Установка Docker Compose
Запустите команду из вашего терминала Linux, чтобы установить docker-compose:
pip install -U docker-compose
Посмотрим на версию Docker Compose установленную на CentOS 8:
docker-compose -v
Шаг 2 Создаем Docker Compose файл
Теперь давайте создадим файл, для нашего docker compose, в качестве расположения файла вы можете использовать любую директорию, я же создам в корневом каталоге CentOS8 отдельную директорию, для файла docker compose:
mkdir -p /docker-compose
Теперь перейдем вновь созданный каталог и при помощи редактора vim создадим файл docker-compose.yml:
vim docker-compose.yml
Добавим в yml файл следующее содержимое:
services: web: image: nginx # webserver for our web application database: image: postgres # postgresql is used as database
Если вы хотите запустить больше изображений docker, то вы всегда их можете найти по ссылке: https://hub.docker.com/search?q=&type=image
Шаг 3 Проверка валидности файла Docker Compose
Проверить работоспособность yaml файла для docker compose можно следующей командой:
docker-compose config
Так, как docker compose проверяет синтаксис используемый в yaml файле перед нами появится ошибка. Узнать подробнее о совместимости версий вы можете по ссылке: https://docs.docker.com/compose/compose-file/
Обновим наш docker-compose файл, чтобы он принял следующий вид:
version: "3" services: web: image: nginx # webserver for our web application database: image: postgres # postgresql is used as database
Еще раз проверим работоспособность файла yaml. Если файл сконфигурирован верно Docker Compose отобразит конфигурацию файла.
Шаг 4 Запуск файла docker-compose.ym
l
Раз наш файл теперь содержит корректную конфигурацию самое время его запустить, для этого выполним команду:
docker-compose up -d
detached mode (-d, —detach): фоновый режим запускается с ключом -d or ---detach
, работая в фоновом режиме вашего терминала он не получает информацию на вход и не отображает вывод.
По окончании загрузки перед нами появится следующая информация об окончании загрузки.
Шаг 5 Проверка работающих контейнеров
Теперь убедитесь, что ваши контейнеры запущены, для этого используйте следующую команду:
docker ps
Если контейнеры успешно запущены, перед Вами появится примерно следующий вывод.
Шаг 6 Изменение конфигурации контейнеров
В нашем yaml
файле мы только что использовали минимальный код для запуска сервиса. Теперь, если мы хотим указать больше данных конфигурации, к примеру изменить в nginx на указанный вручную порт, мы можем сделать это, мы можем это исправить приведя yaml файл dcoker compose к виду:
version: "3" services: web: image: nginx # webserver for our web applicationports:
- "6008:80"
database: image: postgres # postgresql is used as database
Перезапустим docker compose и вновь проверим состояния docker выполнив docker ps:
Проверим переадресацию портов перейдя в браузере по адресу http://ip:6008 если настройка прошла успешно перед нами появится страница приветствия Nginx. В моем случае ip — адрес: 192.168.226.128
Шаг 7 Остановка Docker Compose
Остановить работу docker контейнеров Вы можете выполнив команду:
docker-compose down
После проверки Вы увидите, что все контейнеры docker остановлены.
Предположим, вам нужно расширить вашу базу данных и вам нужно четыре экземпляра базы данных вместо одного . Вы можете увеличить количество сервисов, следующей командой:
docker-compose scale database=4
Проверим количество контейнеров database выполнив: docker ps
вы можете видеть, что у нас запущен один сервер nginx и запущены целых четыре службы баз данных.
Теперь остановите работу контейнеров docker-compose down
О, круто! К настоящему времени мы закончили с основными docker-compose
.