Docker Engine на Linux
Тема дорожной карты · Docker & Containers
Docker Engine — это демон (dockerd) и CLI, которые позволяют запускать контейнеры нативно на операционной системе Linux, без использования виртуальных машин (ВМ), как это происходит на macOS или Windows. Установка производится из официальных репозиториев, таких как apt или dnf, для получения свежих версий и пакетов, включая docker-ce-cli, containerd.io, docker-buildx-plugin, и docker-compose-plugin. После установки необходимо добавить пользователя в группу docker или использовать rootless-режим. Затем следует включить systemd-юнит и проверить установку через команду docker run hello-world. Важно отметить, что дистрибутивный пакет docker.io обычно отстаёт от последних версий, доступных в upstream репозиториях.
Как это работает
Docker Engine на Linux — это рекомендуемый способ использования Docker, так как он работает нативно без использования виртуальных машин. В контексте Docker Engine, демон dockerd и CLI работают напрямую с ядром Linux, что обеспечивает высокую производительность и эффективность. В то время как на macOS и Windows Docker Desktop использует виртуальные машины (HyperKit/WSL2) под капотом, чтобы обеспечить ту же CLI-среду, на Linux Docker Engine работает напрямую с ядром, что делает его более подходящим для производственной среды. Rootless-режим позволяет запускать демон dockerd под не-root пользователем, что сужает поверхность атаки, но требует учета особенностей сетевого функционирования. Группа docker на Linux функционально эквивалентна root правам, позволяя любому пользователю в ней монтировать файловые системы хоста.
Когда применять
Docker Desktop является предпочтительным выбором для разработки на ноутбуках, где требуется простота и удобство использования. Однако для развертывания на производственных Linux-хостах рекомендуется использовать Docker Engine напрямую. Для сред разработки и непрерывной интеграции (RF/CI), где лицензирование Docker Desktop может быть нежелательным, подходят такие альтернативы, как OrbStack (для macOS), Rancher Desktop, Podman Desktop или использование Engine внутри Lima. В производственной среде важно закрепить версию Docker Engine через pinning в apt или yum-репозиториях, чтобы минимизировать влияние изменений в минорных версиях, которые могут менять дефолтные настройки, такие как переключение с cgroups v1 на v2.
Типичные ошибки
При использовании Docker Engine на Linux часто встречаются ошибки, связанные с неправильным пониманием его работы. Одной из распространенных ловушек является добавление пользователей в группу docker с ожиданием, что это не предоставит права root. Другой распространенной ошибкой является обновление Docker Engine в производственной среде без предварительного чтения changelog, что может привести к проблемам с переключением между различными версиями cgroups или хранилищами данных. Еще одной распространенной ошибкой является недостаточное количество оперативной памяти в виртуальной машине Docker Desktop (по умолчанию 2 ГБ), что может привести к проблемам с переполнением памяти (OOM). Наконец, установка Docker одновременно через Snap и официальный репозиторий на Ubuntu может вызвать проблемы с путями.
Связанные понятия
- Установка Docker
- Docker Desktop (macOS / Windows)
- dockerd & Docker Socket
- Rootless Docker
- Docker Compose
- Docker Images
- Docker Containers
- Docker Security
- Docker Logging
- Docker Networking
- Docker Build
- Docker Healthcheck
- Docker Hub
- Docker Registry
- Docker Data Patterns
- Docker Resource Limits
- Docker Restart Policies
- Docker Stats
- Docker Logs
- Docker Layers
- Docker BuildKit
- Docker Capabilities
- Docker Secrets
- Docker Plugins
- Docker SELinux
- Docker Seccomp
- Docker Scan
- Docker Push Pull
- Docker Read-Only
- Docker Multi-Stage Builds
- Docker Multi-Host Networks
- Docker Multi-Arch Builds
- Docker Named Volumes
- Docker Volume CLI
- Docker Volumes
- Docker vs Podman
- Dockerfile Instructions
- [Dockerfile Best Practices](/road