1. Основы контейнеров и установка Docker/Compose
Основы контейнеров и установка Docker/Compose
Зачем DevOps инженеру Docker Compose
Docker Compose — инструмент, который описывает и запускает несколько контейнеров как единое приложение: веб-сервис, базу данных, кеш, очередь, миграции, прокси и т.д. Для DevOps это базовая практика, потому что Compose:В следующих статьях курса мы будем писать compose.yaml, настраивать сети и тома, healthchecks, профили, секреты и стратегии деплоя. Но сначала нужно разобраться, что такое контейнеры, как работает Docker и как корректно установить Docker/Compose.
Что такое контейнер
Контейнер — это изолированный процесс (или набор процессов), который:Важно: контейнер — это не виртуальная машина. Контейнеры используют ядро хостовой ОС и изолируются механизмами ОС.
!Сравнение виртуальных машин и контейнеров
Базовые понятия Docker
Образ (image)
Образ — это шаблон файловой системы и метаданных, из которого создаются контейнеры. Образ обычно версионируется тегом, напримерnginx:1.25.Контейнер (container)
Контейнер — запущенный (или остановленный) экземпляр образа. Он имеет:Реестр (registry)
Реестр — хранилище образов. Самый известный — Docker Hub.Dockerfile
Dockerfile описывает шаги сборки образа. В рамках этого урока мы не углубляемся в сборку, но будем использовать готовые образы, чтобы сфокусироваться на Compose.Том (volume)
Том — способ хранить данные вне слоя контейнера, чтобы переживать пересоздание контейнеров (например, данные PostgreSQL).Как устроен Docker на практике
Docker состоит из нескольких частей:dockerd) — управляет образами, контейнерами, сетями и томамиdocker) — клиент, который отправляет команды демонуdocker compose) — управляет набором сервисов по файлу compose.yaml!Общая архитектура Docker: CLI, Engine, Registry и основные сущности
Установка Docker и Docker Compose
Ниже — рекомендуемый путь установки: официальные пакеты Docker. Это снижает риск проблем с несовместимостью версий.Установка на Linux
#### Рекомендуемый вариант Используйте официальную инструкцию Docker для вашего дистрибутива:В процессе установки обратите внимание на два момента:
docker compose (с пробелом), а не как отдельный бинарник docker-compose.#### Установка Compose plugin Если Compose не установился вместе с Engine, используйте официальную инструкцию:
Установка на macOS
На macOS обычно используют Docker Desktop (внутри запускается Linux VM, потому что Docker контейнеры требуют Linux-ядро):Установка на Windows
На Windows наиболее распространённый и удобный вариант — Docker Desktop с WSL2:Проверка установки
После установки проверьте версии и базовую работоспособность.Проверка версий
Ожидаемо:
docker --version показывает версию клиентаdocker compose version показывает версию Compose V2Пробный запуск контейнера
Если всё установлено правильно, Docker скачает образ и выведет приветственное сообщение.
Просмотр состояния Docker Engine
На Linux (systemd):На Docker Desktop (Windows/macOS) проверяйте статус через интерфейс Desktop и повторите команды docker --version и docker run.
Постустановка и типичные настройки (Linux)
Запуск Docker без sudo
По умолчанию сокет Docker принадлежитroot. Чтобы запускать Docker без sudo, обычно добавляют пользователя в группу docker.docker:> Важно для DevOps: членство в группе docker фактически даёт привилегии, близкие к root, потому что Docker способен монтировать файловые системы и управлять низкоуровневыми настройками. Для серверов с жёсткими требованиями безопасности изучают rootless-режим.
Rootless Docker (когда нужно)
Rootless позволяет запускать Docker без демона от root, но имеет ограничения (сеть, порты, совместимость некоторых сценариев). Начинать обучение Compose проще на стандартной установке.Docker Compose V2: ключевая идея
Compose описывает приложение как набор сервисов в YAML-файле (чаще всегоcompose.yaml). Внутри вы задаёте:В следующих уроках мы последовательно разберём структуру compose.yaml и научимся собирать практичные конфигурации для реальных DevOps-задач.
Минимальные команды, которые нужно знать уже сейчас
docker pull <image> — скачать образdocker images — список образовdocker ps и docker ps -a — список контейнеровdocker logs <container> — логи контейнераdocker exec -it <container> <command> — выполнить команду внутри контейнераdocker compose up -d — поднять сервисы из Compose-файла в фонеdocker compose down — остановить и удалить созданные контейнеры/сетиЧастые проблемы и быстрые проверки
Ошибка доступа к Docker daemon
Примеры сообщений:permission denied while trying to connect to the Docker daemon socketCannot connect to the Docker daemonЧто проверить:
systemctl status dockerdockerКонфликт старого docker-compose
Иногда установлен старый отдельный бинарник docker-compose, но нет Compose V2.Проверка:
Для курса ориентируйтесь на docker compose (Compose V2), потому что он является текущим стандартом.
Что дальше по курсу
В следующей статье мы начнём писать первыйcompose.yaml, поднимем приложение из нескольких сервисов и разберёмся: