Hopp til innhold

Docker для автоматизации

Skip to content

Это машинный перевод текста, который может содержать ошибки!

Docker как автоматизация

С помощью Compose вы описываете желаемую конфигурацию в файле и позволяете Docker создавать контейнеры. Здесь вы начинаете с веб-сервера Nginx из готового образа. Затем вы можете добавить службу и проверить то, что создается автоматически.

Перед началом работы: Docker Engine и Compose из раздела [[Docker Level 1 - Ком i gang|Docker Level 1]] должны работать. Выполните команду docker compose version в виртуальной машине Linux. Вам не нужны приложение Flask, файл Dockerfile или учетная запись GitHub. Справочник по YAML предоставляет поддержку отступов и списков; его можно прочитать без создания workflow на GitHub.

Сначала выполните «Задание 1» и проверьте ответ веб-сервера. Обновление — это справочный материал для последующей работы. «Задание 2» позволяет вам попробовать несколько служб в одном проекте.

Что такое Docker Compose?

С помощью Docker Compose вы описываете одну или несколько служб в файле. В этом упражнении каждая служба запускает один контейнер. Здесь используется файл docker-compose.yml.

Файлы compose.yaml и docker-compose.yml поддерживаются Compose как допустимые имена. Используйте один из них в папке проекта и выполняйте команды из этой папки. Здесь используется файл docker-compose.yml.

services:
  web:
    image: nginx:latest
    ports:
      - "127.0.0.1:8083:80"

Одна команда настраивает всё:

docker compose up -d

Файл Compose может быть использован на другом сервере, но вам также необходимо переместить необходимые данные и локальные файлы и настроить пароли, сеть и другие параметры. Теги, такие как latest, могут указывать на новый образ в будущем. Если сборки должны быть идентичными, вы также обязаны зафиксировать используемый образ.

Почему это автоматизация?

Подумайте о разнице:

Ручная настройка С помощью Docker Compose
Установите Nginx вручную image: nginx:latest
Настройте порты ports: "80:80"
Установите Grafana вручную image: grafana/grafana:latest
Задокументируйте все шаги Опишите желаемую конфигурацию в файле Compose
Повторите всё на следующем сервере docker compose up -d

Файл Compose является частью технической документации и описывает желаемую конфигурацию. Фактическое состояние проверяется с помощью docker compose ps и журналов. Обоснования, результаты тестирования и процедуры резервного копирования должны быть задокументированы дополнительно.

Прочитайте небольшой пример

services собирает сервисы. web — это имя, которое мы даём веб-серверу. image выбирает готовый образ, а ports связывает порт 8083 на обратном адресе ВМ с портом 80 в контейнере. Поэтому вы тестируете непосредственно из виртуальной машины. Сборка из исходного кода будет рассмотрена в разделе [[Docker Level 2 - Dockerfile и Compose|Docker Level 2]].

Полезные команды Docker

Команда Что она делает
docker compose up -d Запускает все сервисы в фоновом режиме
docker compose down Останавливает и удаляет контейнеры проекта и сеть
docker compose logs -f Просматривает логи в реальном времени
docker compose pull Получает образы, на которые указывают теги проекта
docker compose restart Перезапускает контейнеры проекта без смены образа
docker ps Показывает работающие контейнеры

Когда сервису требуется хранилище

В разделе [[Containerbruk Level 2 - Bevar data utanfor containeren|Сохранение данных вне контейнера]] описаны механизмы bind mount и именованных volumes (объёмов). В упражнении с Nginx ниже не требуются база данных или подключение к хранилищу. Используйте поддержку хранения перед расширением проекта сервисом, который должен сохранять данные.

Обновление сервисов

Обновление сервиса Docker просто:

# Получить последнюю версию
docker compose pull

# Перезапустить с новой версией
docker compose up -d

Команда up -d применяет новый образ путём пересоздания контейнера. Проверьте работоспособность службы после обновления; новая версия образа может потребовать изменений в конфигурации или данных.

Легко Задание 1 — Настройка Nginx с помощью Docker Compose

Работайте в консоли виртуальной машины. Создайте новую папку, чтобы это упражнение не изменяло другой проект Compose:

mkdir compose-ovelse
cd compose-ovelse
nano docker-compose.yml

Если папка уже существует, откройте её и проверьте содержимое перед продолжением. Запишите пример Nginx из раздела «Что такое Docker Compose?» в файл. Сохраните с помощью Ctrl+O, подтвердите нажатием Enter и завершите работу Ctrl+X. Проверьте и запустите:

docker compose config --quiet
docker compose up -d
docker compose ps
curl http://127.0.0.1:8083

Команда config --quiet должна завершаться без сообщений об ошибках. Если вы исправите ошибку в файле, выполните проверку повторно перед запуском. Команда ps должна показывать процесс web как работающий, а команда curl должна отображать содержимое Nginx с текстом Welcome to nginx!.

Если порт занят, выберите другой свободный порт хоста в файле и используйте тот же порт в команде curl. Если контейнер останавливается, прочитайте вывод команды docker compose logs web. Не начинайте новый проект в случайной папке для повторных попыток.

Объясните перед продолжением: Какой файл описывает сервис и что создала команда docker compose up -d? Остановите проект командой docker compose stop, запустите его снова командой docker compose up -d и повторяйте тестирование с помощью curl. Если вы используете эту страницу как поддержку при выполнении другой задачи, теперь можно вернуться к ней.

Medium Задание 2 — Добавление службы

Расширьте docker-compose.yml из задания 1 дополнительной службой. Например:

Используйте отдельное имя службы в секции services, с тем же уровнем отступа, что и у web. Изучите официальный пример Docker для этой службы, чтобы определить необходимый образ, порт и хранилище данных. Используйте свободный порт хоста и ограничьте доступ к учебной среде. Тег latest не является фиксированной версией.

Сначала выполните команду docker compose config --quiet. Затем запустите контейнеры командой docker compose up -d и убедитесь, что обе службы работают одновременно. Если вы используете привязку обратного адреса (reverse binding), как это было сделано для Nginx, проверяйте порт из виртуальной машины; доступ с другого устройства требует согласования адреса, порта и сетевых настроек.

Покажите вывод команды docker compose ps и ожидаемый ответ каждой службы по адресу и порту, которые вы фактически настроили. Устно или письменно объясните, что Compose создает автоматически, а что вам все еще нужно настроить самостоятельно, например данные, конфигурацию и резервное копирование. Если одна служба останавливается, просмотрите логи командой docker compose logs перед изменением конфигурации. Остановите отслеживание логов нажатием Ctrl+C.

Резюме

  • Docker Compose позволяет определить несколько сервисов в одном файле
  • Файл Compose является одновременно конфигурацией и документацией
  • Обновление выполняется командой docker compose pull + docker compose up -d
  • Docker упрощает перенос служб между серверами

Источники: Docker Compose: первый проект и Сервисы Compose.