Введение / Зачем это нужно
Docker — это платформа для контейнеризации, которая позволяет упаковывать приложения и их зависимости в изолированные окружения. Установка Docker на Linux — это первый шаг к разработке, тестированию и развёртыванию современных облачных приложений. После выполнения этого гайда вы сможете запускать контейнеры, создавать образы и использовать весь экосистемный инструментарий Docker.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть доступ к учётной записи с правами sudo (или root).
- Система подключена к интернету для загрузки пакетов.
- Дистрибутив поддерживается Docker (список см. в
appliesToвыше). - Установлены базовые утилиты:
curl,gnupg(для Ubuntu/Debian) илиyum-utils(для CentOS/RHEL).
Удаление конфликтующих пакетов (опционально)
Если на системе ранее устанавливался Docker из репозитория дистрибутива (например, пакет docker.io), удалите его:
# Для Ubuntu/Debian
sudo apt-get remove docker docker-engine docker.io containerd runc
# Для CentOS/RHEL/Fedora
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
Пошаговая инструкция
Инструкции различаются в зависимости от дистрибутива. Выберите соответствующий раздел.
Для Ubuntu / Debian
Шаг 1: Установка зависимостей и добавление репозитория
# Обновление индекса пакетов
sudo apt-get update
# Установка необходимых пакетов для работы с HTTPS-репозиториями
sudo apt-get install ca-certificates curl gnupg
# Создание директории для ключей (если её нет)
sudo install -m 0755 -d /etc/apt/keyrings
# Импорт GPG-ключа Docker (официальный метод)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Добавление репозитория Docker (замените `jammy` на вашу версию, например `focal`, `noble`)
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Шаг 2: Установка Docker Engine
# Обновление кэша пакетов с нового репозитория
sudo apt-get update
# Установка последней версии Docker и зависимостей
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Для CentOS / RHEL / Fedora
Шаг 1: Установка yum-utils и добавление репозитория
# Для CentOS/RHEL 7/8
sudo yum install -y yum-utils
# Для Fedora (использует dnf)
sudo dnf install -y dnf-plugins-core
# Добавление стабильного репозитория Docker
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Или для Fedora:
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Шаг 2: Установка Docker Engine
# Установка последней версии (для CentOS/RHEL/Fedora)
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Если yum сообщает о конфликтах, можно попробовать:
sudo yum install docker-ce --allowerasing
Для Arch Linux
# Установка из официальных репозиториев Arch
sudo pacman -S docker
# Дополнительно можно установить docker-compose (если нужен отдельный пакет)
sudo pacman -S docker-compose
Общие шаги для всех дистрибутивов
Шаг 3: Настройка прав доступа и запуск сервиса
# Добавление текущего пользователя в группу `docker` (чтобы не использовать sudo)
sudo usermod -aG docker $USER
# Запуск демона Docker и включение автозагрузки
sudo systemctl start docker
sudo systemctl enable docker
# Проверка статуса (должен быть `active (running)`)
sudo systemctl status docker
⚠️ Важно: Изменения группы вступят в силу после выхода и повторного входа в систему или выполнения
newgrp docker.
Шаг 4: Проверка установки
# Загрузка и запуск тестового контейнера `hello-world`
docker run hello-world
# Ожидаемый вывод: сообщение об успешной загрузке образа и приветствие.
Проверка результата
Успешная установка подтверждается:
- Команда
docker versionпоказывает клиентскую и серверную версии без ошибок. - Контейнер
hello-worldзапускается и выводит приветственное сообщение. - Демон Docker активен:
sudo systemctl is-active dockerвозвращаетactive. - Текущий пользователь может выполнять
docker psбезsudo.
Возможные проблемы
Ошибка: "Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?"
Причина: Демон Docker не запущен или текущий пользователь не в группе docker.
Решение:
sudo systemctl start docker
# Добавьте пользователя в группу, если ещё не делали
sudo usermod -aG docker $USER
# Перезайдите в систему или выполните:
newgrp docker
Ошибка: GPG-ключ не найден или NO_PUBKEY
Причина: Не установлен или не добавлен ключ репозитория Docker.
Решение (Ubuntu/Debian): Убедитесь, что ключ скопирован в /etc/apt/keyrings/docker.gpg и имеет права a+r. Для старых версий (до Ubuntu 22.04) может потребоваться:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <ID_ключа>
Но метод с /etc/apt/keyrings предпочтительнее.
Ошибка: Error: failed to solve: ... при попытке запуска
Причина: Недостаточно места на диске или проблемы с сетью при загрузке образа.
Решение: Проверьте свободное место (df -h) и подключение к Docker Hub. Можно попробовать очистить старые образы: docker system prune -a.
Конфликт версий containerd
Причина: В некоторых дистрибутивах (особенно CentOS 7) предустановленная версия containerd слишком старая.
Решение: Удалите системный containerd перед установкой Docker (он будет установлен как зависимость). Или используйте официальный скрипт Docker для ручной установки.
Дополнительные настройки (опционально)
Настройка DNS для контейнеров
Если контейнеры не могут разрешать имена, отредактируйте /etc/docker/daemon.json:
{
"dns": ["8.8.8.8", "1.1.1.1"]
}
После изменений перезапустите демон: sudo systemctl restart docker.
Увеличение размеров образов (для production)
Для продакшн-сред рекомендуется настройка драйвера хранения (например, overlay2) и лимитов ресурсов. См. официальную документацию Docker по настройке демона.
Заключительные рекомендации
Теперь, когда Docker установлен, вы можете:
- Изучить базовые команды:
docker pull,docker run,docker ps,docker exec. - Написать свой первый
Dockerfileи собрать образ. - Установить Docker Compose для оркестрации многоконтейнерных приложений (входит в пакет
docker-compose-plugin).
Для обновления Docker в будущем используйте стандартный менеджер пакетов (apt upgrade, yum update). Регулярно проверяйте обновления безопасности.