Удаление старых и неофициальных версий Docker перед установкой Docker Engine
Эта пошаговая инструкция поможет удалить неофициальные и устаревшие пакеты Docker, которые могут конфликтовать с официальной установкой Docker Engine, для систем Ubuntu 20.04/22.04/24.04, включая очистку зависимостей и системных конфигураций.
В Linux Docker можно установить разными способами: из стандартных репозиториев системы или из официальных пакетов. Проблема в том, что версии Docker из репозиториев часто отличаются от официальной версии Docker Engine и могут работать иначе или конфликтовать с ней.
Если вы настраиваете новый сервер и Docker ранее не устанавливался, то можно сразу перейти к первичной настройке сервера, а затем к установке Docker Engine от Docker.
Иначе, чтобы он корректно установился и стабильно работал, перед установкой официальной версии необходимо удалить все старые и неофициальные пакеты. Это особенно важно для систем, которые используются давно или где уже предпринимались попытки установки Docker.
К таким пакетам относятся:
docker.iodocker-composedocker-compose-v2docker-docpodman-docker
Кроме того, Docker использует внутренние компоненты containerd и runc. В официальной установке они поставляются вместе в
виде пакета containerd.io. Если containerd или runc были установлены отдельно, их также необходимо удалить, чтобы
избежать конфликтов версий.
В следующих шагах показано, как очистить систему от старых пакетов и подготовить её к установке официального Docker Engine.
1. Проверка наличия конфликтующих пакетов
Перед удалением рекомендуется проверить, какие версии Docker и связанных пакетов уже установлены в системе. Это позволит понять, есть ли конфликтующие или неофициальные пакеты и какие именно из них установлены.
Для проверки выполните команду:
dpkg -l | grep -E 'docker|containerd|runc'
dpkg -l— выводит список всех пакетов, установленных в системе через пакетный менеджер, включая их статус и версии;|— оператор конвейера (pipe). Передаёт вывод одной команды на вход следующей команды;grep -E— фильтрует входной поток и оставляет только строки, соответствующие заданному шаблону. Опция-Eвключает расширенные регулярные выражения, что позволяет искать несколько значений одновременно.
Команда выведет список всех установленных пакетов, связанных с Docker и его зависимостями.
Если команда не выводит ничего — значит, конфликтующие пакеты в системе отсутствуют. В этом случае можно перейти к шагу №3, при условии что ранее уже предпринимались попытки установки Docker Engine и стоит задача выполнить установку «с нуля».
2. Удаление неофициальных и конфликтующих пакетов
Для удаления всех неофициальных и конфликтующих пакетов выполните команду:
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)
apt remove— удаляет указанные пакеты, не затрагивая их данные и конфигурационные файлы;$( ... )— результат выполнения команды внутри скобок подставляется как аргументы дляapt remove;dpkg --get-selections— выводит список из указанных пакетов только в том случае, если они установлены в системе;|— оператор конвейера (pipe). Передаёт вывод одной команды на вход следующей команды;cut -f1— оставляет только первый столбец вывода — имена пакетов. Это необходимо, чтобыapt removeполучил корректный список пакетов для удаления.
Команда автоматически сформирует список установленных пакетов из указанного набора и удалит только те, которые действительно присутствуют в системе.
3. Удаление пакетов Docker Engine, CLI, containerd и Docker Compose
Если Docker Engine устанавливался ранее из официального репозитория и требуется начать установку с нуля, необходимо удалить официальные пакеты Docker.
Для этого выполните команду:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
-
apt purge— полностью удаляет указанные пакеты вместе с их конфигурационными файлами.
4. Очистка данных Docker для «чистой установки»
По умолчанию удаление пакетов Docker не удаляет данные Docker на диске. Это значит, что образы, контейнеры, тома и сети могут остаться в системе и повлиять на дальнейшую установку или работу Docker.
Если стоит задача начать с нуля и выполнить полностью «чистую установку», удалите все данные Docker вручную.
Для удаления всех образов, контейнеров и томов выполните команды:
sudo rm -rf /var/lib/docker
-
rm— утилита для удаления файлов и каталогов; -
-r— удаляет каталог и всё его содержимое рекурсивно; -
-f— принудительно удаляет файлы и каталоги без запросов подтверждения; -
/var/lib/docker— каталог, в котором Docker хранит образы, контейнеры, тома и данные сетей.
sudo rm -rf /var/lib/containerd
-
/var/lib/containerd— каталог, в которомcontainerdхранит свои данные и метаданные.
⚠️ Важно: если вам нужно сохранить существующие контейнеры, тома или образы, этот шаг выполнять не следует.
5. Удаление списка источников и связок ключей
Если Docker Engine устанавливался ранее из официального репозитория, в системе могли сохраниться список источников APT и ключи подписи пакетов Docker. Перед повторной установкой рекомендуется удалить их, чтобы избежать конфликтов и некорректного обновления пакетов.
Для удаления списка источников Docker выполните команду:
sudo rm /etc/apt/sources.list.d/docker.sources
-
rm— утилита для удаления файлов;
Для удаления связки ключей выполните команду:
sudo rm /etc/apt/keyrings/docker.asc
После удаления репозитория и ключей система больше не будет использовать источники Docker до их повторного добавления на этапе установки Docker Engine.
Обратите внимание: если файлы отсутствуют, команда rm сообщит об этом — это нормальное поведение и не является ошибкой.
Заключение
🏁 Поздравляю! В результате выполнения этой инструкции система приведена в чистое и предсказуемое состояние, необходимое для корректной установки Docker Engine
Удалены:
- неофициальные пакеты Docker из стандартных репозиториев;
- ранее установленные официальные пакеты Docker Engine (при необходимости);
- данные Docker для выполнения «чистой установки»;
- источники APT и ключи подписи пакетов Docker.
Теперь можно перейти к инструкции по установке Docker Engine и дальнейшей настройке окружения.
Удачи в дальнейшей работе!