Удаление старых и неофициальных версий Docker перед установкой Docker Engine

Эта пошаговая инструкция поможет удалить неофициальные и устаревшие пакеты Docker, которые могут конфликтовать с официальной установкой Docker Engine, для систем Ubuntu 20.04/22.04/24.04, включая очистку зависимостей и системных конфигураций.

В Linux Docker можно установить разными способами: из стандартных репозиториев системы или из официальных пакетов. Проблема в том, что версии Docker из репозиториев часто отличаются от официальной версии Docker Engine и могут работать иначе или конфликтовать с ней.

Если вы настраиваете новый сервер и Docker ранее не устанавливался, то можно сразу перейти к первичной настройке сервера, а затем к установке Docker Engine от Docker.

Иначе, чтобы он корректно установился и стабильно работал, перед установкой официальной версии необходимо удалить все старые и неофициальные пакеты. Это особенно важно для систем, которые используются давно или где уже предпринимались попытки установки Docker.

К таким пакетам относятся:

  • docker.io
  • docker-compose
  • docker-compose-v2
  • docker-doc
  • podman-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

Удалены:

  1. неофициальные пакеты Docker из стандартных репозиториев;
  2. ранее установленные официальные пакеты Docker Engine (при необходимости);
  3. данные Docker для выполнения «чистой установки»;
  4. источники APT и ключи подписи пакетов Docker.

Теперь можно перейти к инструкции по установке Docker Engine и дальнейшей настройке окружения.

Удачи в дальнейшей работе!

Удаление старых и неофициальных версий Docker перед установкой Docker Engine