Как исправить ошибки при установке 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:
После этого перезапустите Docker:{ "data-root": "/путь/к/новому/разделу/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.
Комментарии (0)