Как исправить ошибки при установке Docker Engine на Linux

Docker Engine — это среда для запуска контейнеров. При установке часто возникают ошибки, связанные с неподходящей версией ОС, неправильным подключением репозитория или конфликтами с ранее установленными пакетами. Это руководство поможет вам диагностировать и устранить самые распространённые проблемы при установке Docker Engine на Linux.

Что понадобится

  • Доступ к терминалу
  • Права суперпользователя (sudo)
  • Стабильное подключение к интернету
  • Знание названия вашего дистрибутива и его версии (можно узнать командой lsb_release -a)

Пошаговая инструкция

Шаг 1. Определите свой дистрибутив и подготовьте систему

Если вы используете стандартные версии Ubuntu, Debian, Fedora, CentOS или RHEL — следуйте официальным инструкциям для этих систем.

Особое внимание уделите производным дистрибутивам:

  • Для производных Debian (например, Kali Linux, BunsenLabs Linux, LMDE) используйте инструкции для Debian, заменив кодовое имя дистрибутива на соответствующее ему имя релиза Debian.
  • Для производных Ubuntu (Kubuntu, Lubuntu, Xubuntu) следуйте инструкциям для Ubuntu, но с аналогичной заменой.

Перед началом работы убедитесь, что система обновлена:

sudo apt update && sudo apt upgrade -y   # для Debian/Ubuntu
sudo dnf upgrade -y                       # для Fedora/RHEL

Шаг 2. Удалите старые версии Docker

Пакеты docker, docker-engine, docker.io и containerd могут конфликтовать с официальной версией Docker Engine. Удалите их (если они установлены):

sudo apt remove docker docker-engine docker.io containerd runc   # Debian/Ubuntu
sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine  # Fedora/RHEL

Однако сохраните каталог /var/lib/docker — он содержит образы и контейнеры, которые вы, возможно, захотите сохранить.

Шаг 3. Добавьте официальный репозиторий Docker

Типичная ошибка: установка пакета из неподходящего репозитория или отсутствие ключа GPG.

Рекомендуемый способ — добавить репозиторий согласно документации Docker. Пример для Debian/Ubuntu:

sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(. /etc/os-release && echo "$ID") $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update

Если вы получаете ошибку apt-key is deprecated — переходите на указанный выше метод с ключами в отдельном файле.

Для RHEL/Fedora используйте dnf config-manager:

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Шаг 4. Установите Docker Engine

Ошибка: E: Unable to locate package docker-ce — решение: проверить архитектуру и версию репозитория (смотрите шаг 3).

Установите последнюю стабильную версию:

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin  # Debian/Ubuntu
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin  # Fedora/RHEL

Если вы хотите получить тестовую версию с новыми функциями, замените stable на test в строке репозитория. Предупреждение: тестовые сборки могут содержать нестабильные функции.

Шаг 5. Запустите демон Docker и проверьте работу

sudo systemctl start docker
sudo systemctl enable docker   # автозапуск при загрузке
sudo docker run hello-world

Ошибка: Cannot connect to the Docker daemon. Решение:

  • Проверьте, запущен ли демон: sudo systemctl status docker
  • Просмотрите логи: journalctl -u docker
  • Убедитесь, что ваш пользователь добавлен в группу docker:
    sudo usermod -aG docker $USER
    newgrp docker
    

Шаг 6. Настройте необязательные параметры (рекомендуется)

Чтобы не использовать sudo для каждой команды, выполните:

sudo usermod -aG docker $USER

После этого выйдите из сессии и войдите заново, чтобы изменения вступили в силу.

Возможные ошибки и их решения

Ошибка 1: dpkg: error processing package docker-ce

Возникает при повреждённом кэше или конфликте зависимостей.

Решение:

sudo apt clean
sudo apt --fix-broken install
sudo apt autoremove
sudo apt install docker-ce

Ошибка 2: Error response from daemon: OCI runtime create failed

Связана с несовместимостью или устаревшим компонентом контейнеризации (runc или containerd).

Решение:

  • Обновите ядро системы до актуальной версии
  • Удалите и заново установите containerd:
    sudo apt remove containerd.io
    sudo apt install containerd.io
    

Ошибка 3: failed to register layer: no space left on device

Недостаточно места в разделе, где расположен /var/lib/docker.

Решение:

  • Очистите неиспользуемые образы и контейнеры: docker system prune -a
  • Проверьте размер: du -sh /var/lib/docker
  • Перенесите каталог Docker на другой раздел, отредактировав файл /etc/docker/daemon.json:
    {
      "data-root": "/путь/к/новому/разделу/docker"
    }
    
    После этого перезапустите Docker: sudo systemctl restart docker

Ошибка 4: apt-key output should not be parsed (in /etc/apt/keyrings/docker.gpg)

Устаревший способ добавления ключа с использованием вывода apt-key.

Решение: Перейдите на новый метод, указанный в шаге 3 (загрузка ключа через gpg --dearmor в отдельный файл).

Ошибка 5: failed to fetch https://download.docker.com/...

Проблемы с сетью или неправильный источник репозитория.

Решение:

  • Проверьте, что файл /etc/apt/sources.list.d/docker.list содержит правильную запись (архитектура, кодовое имя дистрибутива, канал).
  • Попробуйте временно отключить или изменить DNS-сервер.
  • Для систем за прокси настройте переменные окружения: export http_proxy="http://прокси:порт"

Полезные советы

  • Выбор канала обновлений. Для рабочих систем используйте канал stable — он содержит только проверенные релизы. Тестовый канал (test) предназначен для предварительного ознакомления, но не гарантирует стабильности.
  • Поддержка. Docker Engine — бесплатный проект с открытым исходным кодом. Официальная техническая поддержка предоставляется только для Docker Desktop (при наличии платной подписки для крупных компаний). Сообщество помогает через форумы и систему отслеживания ошибок.
  • Лицензирование. Код Docker Engine распространяется по лицензии Apache 2.0. Коммерческое использование Docker Desktop на предприятиях с числом сотрудников более 250 или годовым доходом свыше 10 миллионов долларов США требует приобретения подписки. Для Docker Engine таких ограничений нет.
  • Сборка для нестандартных архитектур. Docker поддерживает установку на ARM64, ARM (32-bit), ppc64le и s390x. Если вы используете одну из этих архитектур, убедитесь, что в репозитории доступны пакеты для вашей платформы.
  • Сброс настроек. Если вы полностью запутались, удалите Docker и все его следы, затем начните с чистого листа: sudo apt purge --autoremove docker-ce docker-ce-cli containerd.io, вручную удалите каталог /var/lib/docker (после резервного копирования данных) и повторите установку.
  • Следите за логами. При любой неполадке первым делом просмотрите журнал демона: journalctl -u docker -n 50 --no-pager. Там часто находится конкретная причина сбоя.

Следуя этим шагам, вы сможете успешно установить Docker Engine на большинство дистрибутивов Linux и устранить типовые ошибки. Если проблема не решается — обращайтесь к официальной документации или сообществу Docker.