Docker, лекция 15. Оркестровка с использованием Docker Compose

Docker, лекция 15. Оркестровка с использованием Docker Compose

При работе с несколькими контейнерами может быть сложно управлять запуском, а также настройкой переменных и ссылок. Чтобы решить эту проблему, в Docker имеется инструмент под названием Docker Compose для управления оркестровкой, запуском контейнеров.

Посетите https://docs.docker.com/compose/install/ для получения инструкций о том, как установить docker compose в вашей локальной среде.

Определение первого контейнера

Docker Compose основан на файле docker-compose.yml. Этот файл определяет все контейнеры и параметры, необходимые для запуска набора кластеров. Cвойства отображаются в зависимости от того, как вы используете команды docker run, теперь хранятся в системе контроля версий и совместно используются с вашим кодом.

Формат файла основан на YAML (Yet Another Markup Language).

container_name:
  property: value
    - or options

В этом сценарии у нас есть приложение Node.js, которое требует подключения к Redis. Для начала нам нужно определить наш файл docker-compose.yml для запуска приложения Node.js.

Учитывая приведенный выше формат, в файле необходимо присвоить имя контейнера «web» и установить для свойства сборки текущий каталог. Мы рассмотрим другие свойства в следующих шагах. Итого:

web:
  build: .

Определение настроек

Docker Compose поддерживает все свойства, которые можно определить с помощью Docker Run.

Чтобы связать два контейнера вместе, укажите свойство links и перечислите необходимые соединения. Например, следующее будет ссылаться на контейнер источника redis, определенный в том же файле, и присвоить псевдониму то же имя. Так же пробросим порты.

web:
  build: .

  links:
    - redis

  ports:
    - "3000"
    - "8000"

Дополнительная информация тут — https://docs.docker.com/compose/compose-file/

Определение второго контейнера

На предыдущем шаге мы использовали Dockerfile в текущем каталоге в качестве базы для нашего контейнера. На этом этапе мы хотим использовать существующий образ из Docker Hub в качестве второго контейнера.

Формат YAML достаточно гибок, чтобы определять несколько контейнеров в одном файле.

web:
  build: .

  links:
    - redis

  ports:
    - "3000"
    - "8000"
    - "3001"

redis:
  image: redis:alpine
  volumes:
    - /var/redis/data:/data

Запуск

С созданным файлом docker-compose.yml вы можете запускать все приложения с помощью одной команды up. Если вы хотите вызвать один контейнер, вы можете использовать up <имя>.

Аргумент -d указывает, что контейнеры запускаются в фоновом режиме, аналогично тому, как это используется в Docker run.

docker-compose up -d

Управление

Docker Compose не только может управлять начальными контейнерами, но также предоставляет способ управления всеми контейнерами с помощью одной команды.

Например, чтобы увидеть детали запущенных контейнеров, вы можете использовать docker-compose ps.

Для доступа ко всем журналам через один поток вы используете docker-compose logs.

Другие команды следуют той же схеме. Получите их, набрав docker-compose

Docker Scale

Поскольку Docker Compose понимает, как запускать контейнеры вашего приложения, его также можно использовать для масштабирования количества работающих контейнеров.

Параметр масштаба позволяет указать службу, а затем количество экземпляров, которые вы хотите. Если это число превышает количество уже запущенных экземпляров, он запустит дополнительные контейнеры. Если число меньше, то остановит ненужные контейнеры. Увеличим количество web контейнеров.

docker-compose scale web=3

Так же ничего не мешает уменьшить их количество:

docker-compose scale web=3

Остановка и удаление

Как и при запуске приложения, для остановки набора контейнеров вы можете использовать команду docker-compose stop.

Чтобы удалить все контейнеры, используйте команду docker-compose rm.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *