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

Skip to content

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

Docker упрощает развёртывание приложений. Вместо ручной установки и настройки программного обеспечения на сервере вы определяете всё в конфигурационных файлах. Результат воспроизводимый, переносимый и быстрый для настройки.

Новичок в Docker?

[[Docker Level 1 - Ком i gang|🐳 Docker - Ком i gang]] и 🐳 Docker - Dockerfile og Compose знакомят с образами, контейнерами и простыми конфигурациями Compose — этот уровень строится на их основе, добавляя несколько сервисов и тома.

Что такое Docker Compose?

С помощью Docker Compose вы определяете несколько сервисов в одном файле (docker-compose.yml). Каждый сервис представляет собой контейнер со своей собственной конфигурацией.

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"

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

docker compose up -d

Нужно ли вам переместить сервис на другой сервер? Скопируйте файл и выполните ту же команду. Всё идентично.

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

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

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

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

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

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

Тома: хранение данных вне контейнера

Контейнеры временны. Если вы удаляете контейнер, всё его содержимое исчезает. Для сохранения данных мы используем томы (volumes):

services:
  database:
    image: postgres:16
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: hemmelig
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

Здесь файлы базы данных хранятся в томе с именем db-data. Даже если вы удалите и повторно создадите контейнер, данные по-прежнему будут находиться там.

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

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

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

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

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

Easy Задача 1 — Настройка Nginx с помощью Docker Compose

Создайте файл docker-compose.yml, который запускает веб-сервер Nginx:

  1. Создайте новую папку и создайте в ней файл docker-compose.yml
  2. Определите сервис со значением image: nginx:latest на порту 80
  3. Выполните команду docker compose up -d
  4. Откройте адрес http://localhost в браузере

Medium Задание 2 — Добавьте сервис

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

Запустите всё с помощью команды docker compose up -d и убедитесь в том, что оба сервиса работают одновременно.

Резюме

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