Разбираем три метода установки Docker на Ubuntu 24.04: стандартный способ через репозиторий разработчиков, установку .deb-пакета и скрипт. Также в статье — настройка безопасности и производительности Docker.
Введение
В статье — 3 способа установки Docker Engine на Ubuntu 24.04: через официальные репозитории, .deb-пакеты и автоматический скрипт. Также рассмотрим настройки безопасности и производительности, включая интеграцию с nftables и cgroups.
Установка Docker: 3 метода
Рассмотрим различные методы установки.
Способ 1. Репозиторий разработчиков (рекомендуется для продакшена)
Этот метод гарантирует получение актуальных версий Docker, подписанных разработчиками, и автоматические обновления через APT.
После обновления пакетного индекса установите зависимости:
sudo apt install ca-certificates curl
Пакет ca-certificates обеспечивает проверку SSL-сертификатов, а curl используется для загрузки ключей.
Импорт GPG-ключа:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Флаг -fsSL подавляет вывод ошибок и метаданных, а --dearmor преобразует ASCII-ключ в бинарный формат, нужный для apt.
Добавление репозитория:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]] https://download.docker.com/linux/ubuntu noble stable" | sudo tee /etc/apt/sources.list.d/docker.list
Конструкция [arch=...] автоматически определяет архитектуру процессора (amd64/arm64), а signed-by указывает путь к ключу для верификации пакетов. Для Ubuntu 24.04 всегда используйте репозиторий noble — поддержка предыдущих кодовых имён прекращена через 6 месяцев после выхода релиза.
Установка компонентов:
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io
Устанавливаются три ключевых пакета:
- docker-ce — основной демон,
- docker-ce-cli — инструменты командной строки,
- containerd.io — низкоуровневая среда выполнения контейнеров.
Способ 2. Через .deb-пакеты (для систем без Интернета)
Метод подходит для air-gapped-сред, где доступ к репозиториям заблокирован. Скачайте пакеты вручную на машине с Интернетом:
wget https://download.docker.com/linux/ubuntu/dists/noble/pool/stable/$(dpkg --print-architecture)/{docker-ce,docker-ce-cli,containerd.io}_*.deb
Перенесите .deb-файлы на целевой сервер (через USB/SFTP) и установите локально:
sudo apt install ./docker-ce_*.deb ./docker-ce-cli_*.deb ./containerd.io_*.deb
Флаг ./ указывает apt искать пакеты в текущей директории.
С таким способом установки вам придётся вручную отслеживать обновления безопасности. Не забывайте проверять контрольные суммы SHA256 с официального сайта.
Способ 3. Скрипт get.docker.com (для быстрого тестирования)
Установка через скрипт get.docker.com — это автоматизированный метод, подходящий для тестирования и экспериментов:
curl -fsSL https://get.docker.com | sudo sh
Скрипт выполняет:
- определение дистрибутива и архитектуры,
- настройку репозитория (как в первом способе),
- установку последней стабильной версии Docker.
Однако метод имеет ограничения. Он не подходит для продакшена, так как скрипт не позволяет контролировать версии, может конфликтовать с существующими ПО и по умолчанию включает нерекомендуемые компоненты (например, docker-compose-plugin).
Верификация установки
После любого метода убедитесь в корректности установки.
Запустите тестовый контейнер:
sudo docker run --rm hello-world
Успешный вывод содержит:
Hello from Docker!
This message shows your installation appears to be working correctly.
Флаг --rm автоматически удалит этот контейнер после выполнения.
Версия Docker:
sudo docker info | grep "Server Version"
Для Ubuntu 24.04 должна отображаться версия не ниже 26.Х.Х (актуальная на 2025 год).
Статус демона:
systemctl status docker.service
Ищите строку Active: active (running) — это подтверждает, что фоновый процесс запущен.
Если возникли ошибки:
- Нет доступа к сокету Docker — добавьте пользователя в группу docker (об этом — в следующем разделе).
- Ошибка iptables not found — установите пакет iptables-nft (в Ubuntu 24.04 используется nftables).
- Сетевые проблемы — проверьте journalctl -u docker.service на предмет блокировки брандмауэром.
Для промышленных сред всегда выбирайте первый способ — он обеспечивает контроль версий и автоматические обновления безопасности через unattended-upgrades.
Безопасность и производительность Docker
После установки Docker критически важно настроить параметры безопасности и оптимизировать производительность под ваши задачи. Начнём с управления правами доступа — по умолчанию для работы с Docker нужны права root, что создаёт риски при случайном выполнении вредоносных команд.
Управление правами пользователей
Чтобы не использовать sudo, добавьте пользователя, от имени которого вы работаете с Docker, в группу docker:
sudo usermod -aG docker $USER
После этой команды либо выйдите из системы и войдите, либо активируйте изменения в текущей сессии командой:
newgrp docker
Она перезагружает настройки групп без перезапуска сессии. Для проверки прав выполните docker run hello-world — если контейнер запустится без sudo, настройка выполнена корректно. Однако помните: добавление в группу docker фактически предоставляет пользователю root-привилегии, поэтому делайте это только для доверенных аккаунтов.
Конфигурация демона через daemon.json
Основные параметры Docker Engine настраиваются в файле /etc/docker/daemon.json. Создайте его с такими настройками:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"storage-driver": "overlay2",
"iptables": false,
"dns": ["8.8.8.8", "1.1.1.1"]
}
Пояснение параметров:
- log-driver — формат хранения логов. json-file обеспечивает структурированный вывод и совместим со стандартными инструментами анализа;
- log-opts — ограничивает размер логов в 100 МБ на контейнер с сохранением трёх ротированных копий, что предотвращает заполнение диска;
- storage-driver — указан overlay2, это оптимальный драйвер для Ubuntu 24.04, поддерживающий квоты дискового пространства через xfs;
- iptables — отключение генерации правил iptables необходимо, так как в Ubuntu 24.04 по умолчанию используется nftables;
- dns — глобальные DNS-серверы для всех контейнеров (переопределяются на уровне контейнера при необходимости).
После изменения конфигурации перезапустите демон:
sudo systemctl restart docker
Интеграция с nftables
В Ubuntu 24.04 nftables заменил iptables в качестве базового файрвола. Docker автоматически интегрируется с nftables и создаёт правила для сетевой изоляции контейнеров. Проверьте сгенерированные правила:
sudo nft list ruleset | grep -A 10 "docker"
В выводе должны присутствовать цепочки DOCKER-USER и DOCKER-ISOLATION-STAGE, управляющие трафиком между контейнерами и хостом. Если вы используете кастомные правила nftables, добавляйте исключения до этих цепочек, чтобы не нарушить работу Docker.
Ограничение ресурсов на уровне демона
Чтобы предотвратить исчерпание ресурсов хост-системы, задайте глобальные лимиты через systemd. Создайте файл переопределения:
sudo systemctl edit docker.service
Добавьте в редакторе:
[Service]
CPUQuota=200%
MemoryLimit=4G
Эти параметры означают:
- CPUQuota=200% — Docker в целом может использовать не более 2 ядер CPU.
- MemoryLimit=4G — общее потребление памяти всеми контейнерами ограничено 4 ГБ.
Такие лимиты особенно важны на shared-хостах или в мультитенантных средах. Учтите, что они не заменяют ограничения на уровне отдельных контейнеров (через docker run --cpus или --memory), а дополняют их.
Дополнительные рекомендации безопасности
Активируйте Content Trust для верификации подписей образов:
export DOCKER_CONTENT_TRUST=1
Регулярно обновляйте Docker через стандартный менеджер пакетов:
sudo apt update && sudo apt upgrade docker-ce
Используйте rootless mode для изоляции демона от привилегий root:
sudo apt install docker-ce-rootless-extras
dockerd-rootless-setuptool.sh install
Эти настройки обеспечивают и безопасность, и производительность, позволяя эффективно использовать Docker в Ubuntu 24.04 как для разработки, так и для продакшен-сред.
Читайте в блоге:
- Как настроить файрвол в Ubuntu с помощью UFW
- Ubuntu 22.04: установка и базовая настройка
- Как войти в Ubuntu под root