Docker и контейнеризация: от первого запуска до диагностики
Docker с нуля на Linux и Windows: образы, Dockerfile, Compose, данные, сети, логи, безопасность и эксплуатация приложений.
Материалы раздела
- Docker с нуля: что такое контейнеризация, образ и контейнер — Контейнеризация — способ запускать приложение вместе с его пользовательским окружением в изолированном процессе.
- Docker на Linux: установка Engine и пошаговый чеклист для начинающих — Для Docker на Linux с нуля нужны три проверки: совместимый дистрибутив, работающий Engine и доступ клиента к нему.
- Docker Desktop на Windows и macOS: установка и проверка для начинающих — Docker для начинающих на Windows удобнее осваивать через Docker Desktop и WSL 2. Цель урока — запустить Linux-контейнер и понимать, из какой оболочки выполняется команда.
- Жизненный цикл контейнера: run, exec, stop, rm и сохранность файлов — Контейнер живёт, пока работает его главный процесс. docker run создаёт новый контейнер и запускает его; docker start запускает уже существующий остановленный; docker exec…
- Docker Compose: первый пошаговый туториал для начинающих — Этот русскоязычный Docker Compose tutorial для начинающих актуализирован в 2026 году. Мы опишем маленькое веб-приложение файлом compose.yaml, запустим его, проверим ответ и…
- Docker и Kubernetes для начинающего разработчика: когда нужен кластер — Docker и Kubernetes решают разные части задачи доставки приложения. Разработчик собирает образ и проверяет процесс, сеть и данные; затем выбирает способ запуска.
- Dockerfile и docker build: контекст, -f, -t и ошибка requires 1 argument — Dockerfile описывает сборку образа. Команда docker build читает этот рецепт и получает доступ к контексту сборки — набору файлов, из которого разрешено копировать исходники.
- Docker для Python: рабочий Dockerfile веб-приложения и requirements.txt — Ниже полный пример Dockerfile для Python с маленьким HTTP-приложением. Сначала обойдёмся стандартной библиотекой: так можно проверить Docker отдельно от загрузки внешних пакетов.
- Слои и кэш Docker: .dockerignore, no-cache и BuildKit cache mounts — Кэш сборки отвечает на вопрос: можно ли повторно использовать результат шага с теми же входными данными? Он ускоряет работу, но не является обещанием, что внешние репозитории…
- ARG, ENV и docker build --build-arg: параметры и секреты сборки — ARG — параметр рецепта сборки; ENV — переменная окружения, которая может попасть в создаваемые контейнеры. Запрос «docker build args» обычно сводится к двум вопросам: как…
- Multi-stage build Docker: собираем Go-приложение и отделяем runtime — Multi-stage build (multistage, multi stage builds) делит сборку на стадии. В одной находятся компилятор и исходники; в конечную копируется только результат и необходимые…
- Docker Buildx: builders, платформы и экспорт через --load и --push — Buildx — Docker CLI-плагин для работы с BuildKit. Builder — выбранная среда, которая выполняет сборку; её драйвер определяет возможности и способ передачи результата.
- Docker Compose build: --no-cache, up --build и ошибка отсутствующего Buildx — docker compose build собирает образы сервисов, а docker compose up создаёт или обновляет контейнеры. Эти фазы связаны, но их результат разный: после удачной сборки старый…
- Docker registry: теги, latest, digest и команды push и pull — Registry хранит образы для передачи между машинами. Тег — читаемое имя ссылки на образ; digest — идентификатор содержимого.
- Dockerfile VOLUME: объявление пути, runtime mount и заполнение пустого тома — Инструкция VOLUME в Dockerfile объявляет путь для данных контейнера. Она не выбирает каталог вашего компьютера, не задаёт удобное имя будущего тома и не делает резервную копию.
- Volumes: данные переживают удаление контейнера — Контейнер можно пересоздать из образа, но пользовательские данные нельзя получить повторной сборкой. В этом уроке вы сохраните маленький файл вне записываемого слоя контейнера,…
- Bind mounts и относительные пути в Docker Compose — Для редактирования исходников на компьютере удобно подключить существующую папку внутрь контейнера. Это bind mount: контейнер получает доступ к конкретному пути хоста.
- Права доступа к томам: UID, GID и процесс контейнера — Сообщение Permission denied после подключения папки обычно связано с тем, от чьего имени процесс обращается к файлам.
- Резервная копия volume и проверка восстановления — Том защищает данные от пересоздания контейнера, но не от удаления самого тома, ошибки приложения или потери диска.
- Удаление контейнеров и очистка volumes без потери нужных данных — Освобождение диска начинается с ответа «какой объект занимает место и кто им пользуется». Команда удаления контейнера и команда удаления тома решают разные задачи.
- Порты Docker: publish, EXPOSE и доступ через localhost — У веб-сервера внутри контейнера и у порта компьютера разные адресные пространства. В этом уроке запустим Nginx на локальном порту 18080, проверим отображение и разберём, почему…
- Сети Compose: DNS сервисов и соединение контейнеров — Приложение и база данных обычно работают в разных контейнерах. Адрес localhost:5432 внутри приложения указывает на само приложение, поэтому не приводит к PostgreSQL в соседнем…
- PostgreSQL в Docker Compose: запуск, healthcheck и сохранение базы — Соберём локальный PostgreSQL для разработки: база запускается через Compose, данные переживают пересоздание, готовность видна в статусе, а порт доступен только на компьютере…
- Healthcheck Nginx и PostgreSQL: готовность сервисов в Compose — Запущенный процесс ещё не означает готовую услугу. Nginx может отвечать собственной страницей, пока база недоступна; PostgreSQL может принимать соединения до применения схемы…
- Конфигурация Compose: .env, environment и файлы секретов — Один и тот же Compose-файл может запускать локальный стенд и тестовый проект с разными настройками. Но .env, переменные shell, environment, env_file и secrets действуют на разных…
- PID 1, сигналы и restart policy: корректная остановка контейнера — Когда контейнер получает команду остановки, Docker обращается к его главному процессу. Приложение должно успеть завершить запросы и освободить ресурсы; если главный процесс…
- Логи Docker, Compose и Caddy: tail, since и поиск ошибок — Для диагностики полезен ограниченный фрагмент журнала: нужный контейнер, время и событие. Покажем последние 100 строк, наблюдение новых сообщений и поиск ошибки, затем отдельно…
- Размер логов Docker: ротация и управление диском — Контейнер может занимать мало места в образах и одновременно заполнять диск журналами. Ротация задаёт предел локальной истории, а не уменьшает количество событий приложения.
- Логи Docker Swarm: service, task и stack deploy — Команда docker stack deploy относится к Swarm, а docker compose up — к другому способу управления приложением.
- Exit code 137, OOMKilled и лимиты CPU/RAM — Код 137 часто связывают с нехваткой памяти, но сам по себе он не устанавливает причину. В shell-соглашении это 128 + 9, то есть завершение SIGKILL.
- Сборка завершилась с exit code 100: диагностика APT в Dockerfile — Строка did not complete successfully: exit code: 100 завершает отчёт о неудачной команде внутри сборки. Она не объясняет причину сама по себе.
- Docker daemon не запускается: systemctl, journalctl и context — Сообщение Job for docker.service failed because the control process exited with error code означает, что systemd не смог успешно запустить службу.
- Testcontainers: Could not find a valid Docker environment — Исключение java.lang.IllegalStateException: Could not find a valid Docker environment. Please see logs and check configuration возникает, когда Testcontainers не нашёл подходящий…
- Windows DCOM 10016 и Docker: как различить ошибки localhost — Длинное событие Windows о «разрешении локальной активации для COM-сервера» содержит слова localhost и «контейнер приложения».
- Как устроен контейнер: namespaces, cgroups и OCI runtime — Контейнер Linux — процесс или группа процессов с настроенным окружением, изоляцией и ограничениями ядра. В отличие от отдельной виртуальной машины ему обычно не требуется…
- Безопасный запуск Docker: non-root, rootless, capabilities и seccomp — Контейнерная упаковка не отменяет контроль полномочий. Разные механизмы ограничивают разные стороны выполнения: пользователя процесса, привилегии daemon, доступные операции ядра…
- CI/CD контейнеров: проверка образа, публикация и происхождение — CI должен проверять тот артефакт, который команда собирается запускать. Успешный lint исходников не доказывает, что в итоговый образ попал нужный файл и процесс стартует.
- Docker Compose на VPS: обновление, HTTPS и откат — Развёртывание на VPS начинается с готового проверенного образа, постоянных данных и понятного пути назад. Compose подходит для управления приложением на одном Engine, но сам по…