Установка Docker в Ubuntu, Debian и Fedora: официальный репозиторий и работа без sudo
Установить Docker в Ubuntu надёжнее всего из официального репозитория Docker: удалить старые пакеты, добавить ключ и файл docker.sources, поставить docker-ce с плагинами Compose и Buildx. Для Debian 13 меняется только адрес репозитория, для Fedora 44 есть свой репозиторий и ручной запуск службы, а чтобы работать без sudo, пользователя добавляют в группу docker.

Содержание
docker.io, docker-ce или Podman: что выбрать перед установкой
Под словом Docker в Linux прячутся несколько вариантов, и от выбора зависит, по какой инструкции идти.
- docker-ce из репозитория Docker. Docker Engine от самих разработчиков: свежие версии, плагины
docker composeиbuildxв комплекте. Этот вариант описан ниже, и его рекомендует официальная документация. - docker.io из репозитория Ubuntu или Debian. Собран мейнтейнерами дистрибутива, ставится одной командой
sudo apt install docker.io, но версия отстаёт, а Compose приходится ставить отдельно. Подходит, если нужен Docker "просто чтобы был". - Docker Desktop. Графическое приложение с виртуальной машиной внутри. На Linux оно нужно редко: Engine работает прямо в системе и быстрее.
- Podman. Совместимая альтернатива без фонового демона, по умолчанию стоит в Fedora. Если вам нужны только контейнеры, а не именно Docker, присмотритесь к Podman.
Смешивать docker.io и docker-ce нельзя: пакеты конфликтуют, и демон может не стартовать. Поэтому первый шаг любой установки - убрать то, что стояло раньше.
Установка Docker в Ubuntu 26.04 и 24.04 из официального репозитория
Docker поддерживает Ubuntu 26.04 LTS, 24.04 LTS, 22.04 LTS и промежуточный выпуск 26.10. Порядок одинаковый для всех.
Шаг 1. Удалить конфликтующие пакеты
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)
Если ничего из списка не стояло, apt просто скажет, что удалять нечего. Образы и тома в /var/lib/docker при этом не удаляются.
Шаг 2. Ключ и репозиторий
Docker теперь публикует инструкцию с файлом в формате deb822 (.sources), а не однострочным docker.list. Оба формата работают, но новый проще читать:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
Конструкция с UBUNTU_CODENAME нужна для производных вроде Linux Mint: у них своё кодовое имя, а репозиторий Docker знает только имена Ubuntu. Про ключи и файлы источников подробнее в статье про команды apt.
Шаг 3. Установка
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
В Ubuntu служба запускается сама сразу после установки.
Debian 13 Trixie: чем отличается установка
Для Debian 13 (stable) и Debian 12 (oldstable) шаги те же, меняются адрес и способ определить кодовое имя:
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
В Debian sudo бывает не настроен, если при установке задали пароль root. Тогда выполняйте команды из-под su - или сначала добавьте себя в группу sudo командой usermod -aG sudo имя от root.
Установка Docker в Fedora 44
В Fedora 43, 44 и 45 репозиторий Docker подключается через config-manager из DNF5. Сначала уберите пакеты из штатных репозиториев, включая podman-docker, который подменяет команду docker на Podman:
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 podman-docker
sudo dnf config-manager addrepo --from-repofile https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
При первой установке dnf спросит, принять ли GPG-ключ. Сверьте отпечаток: он должен быть 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35. В отличие от Ubuntu, в Fedora служба не запускается сама:
sudo systemctl enable --now docker
Синтаксис addrepo появился в DNF5, старые инструкции с --add-repo в Fedora 44 выдадут ошибку. Остальные отличия нового dnf собраны в статье про команды dnf.
Проверка: работает ли Docker
sudo docker run hello-world
docker version
docker compose version
systemctl status docker
Первая команда скачает крошечный тестовый образ, запустит контейнер и напечатает приветствие. Если вы его видите, демон, сеть и доступ к реестру в порядке. docker version показывает две части, Client и Server: если вторая не выводится, клиент не достучался до демона.
Compose в современных версиях вызывается через пробел, docker compose, а не через дефис. Старый docker-compose на Python давно не развивается, переход разобран в материале про Docker Compose plugin.
Docker без sudo: группа docker и чем она опасна
По умолчанию сокет демона /var/run/docker.sock доступен только root и членам группы docker. Чтобы работать без sudo, добавьте себя в группу:
sudo groupadd docker
sudo usermod -aG docker $USER
# применить без перелогина в текущем терминале
newgrp docker
docker run hello-world
Команда groupadd скажет, что группа уже существует, это нормально: пакет создаёт её сам. Полноценно новая группа подхватится после выхода из сеанса и входа обратно, newgrp действует только в одном терминале.
Если после этого видите permission denied ... docker.sock, проверьте вывод id: группы docker в списке нет, значит вы не перелогинились. Ошибка про ~/.docker/config.json обычно остаётся после запусков через sudo и лечится так:
sudo chown "$USER":"$USER" "$HOME/.docker" -R
sudo chmod g+rwx "$HOME/.docker" -R
Членство в группе docker равносильно root-доступу: любой её участник может запустить контейнер с примонтированным / и менять системные файлы. На личном ноутбуке это приемлемо. На сервере, где работают несколько человек, лучше режим rootless, когда демон работает от обычного пользователя, его настройка описана в статье Docker Rootless.
Пакеты Docker в разных дистрибутивах
| Дистрибутив | Откуда | Пакеты | Запуск службы |
|---|---|---|---|
| Ubuntu 22.04-26.04 | download.docker.com | docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, docker-compose-plugin | автоматически |
| Ubuntu, вариант дистрибутива | universe | docker.io, docker-compose-v2 | автоматически |
| Debian 12, 13 | download.docker.com | те же, что для Ubuntu | автоматически |
| Fedora 43-45 | download.docker.com | те же пять пакетов | systemctl enable --now docker |
| Arch Linux | extra | docker, docker-compose, docker-buildx | systemctl enable --now docker |
В Arch отдельный репозиторий не нужен: sudo pacman -S docker docker-compose docker-buildx, затем запуск службы и группа, как описано выше. Есть ещё скрипт get.docker.com, который делает всё одной командой. Документация Docker прямо называет его вариантом для тестовых машин: он не спрашивает подтверждений и ставит последнюю версию, в том числе туда, где вы этого не ждали.
Частые проблемы после установки
Cannot connect to the Docker daemon
Демон не запущен или упал. Смотрим состояние и журнал:
sudo systemctl status docker
journalctl -u docker -b --no-pager | tail -n 50
Частые причины: битый /etc/docker/daemon.json (одна лишняя запятая, и служба не стартует), остатки docker.io рядом с docker-ce, конфликт с Podman. Общий порядок поиска причины упавшей службы есть в статье про упавшие службы systemd.
Образы не скачиваются
Из России доступ к Docker Hub и к download.docker.com в разное время работал с перебоями. Если docker pull висит или падает с ошибкой TLS, можно прописать зеркало реестра в /etc/docker/daemon.json:
{
"registry-mirrors": ["https://mirror.gcr.io"]
}
После правки выполните sudo systemctl restart docker. Используйте только зеркала, которым доверяете: образ из чужого кэша запускается с теми же правами, что и оригинал.
Файрвол не закрывает порты контейнеров
Docker сам пишет правила iptables и nftables, и опубликованный порт (-p 8080:80) будет доступен снаружи, даже если UFW его запрещает. Публикуйте сервисы только на локальный адрес, -p 127.0.0.1:8080:80, если доступ извне не нужен. Подробности про UFW в отдельной статье.
Docker съел диск
Образы и тома лежат в /var/lib/docker. Посмотреть и почистить:
docker system df
docker system prune
# вместе с неиспользуемыми томами, осторожно
docker system prune --volumesКак полностью удалить Docker
В Ubuntu и Debian:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm /etc/apt/sources.list.d/docker.sources
sudo rm /etc/apt/keyrings/docker.asc
В Fedora:
sudo dnf remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker /var/lib/containerd
Команды rm -rf удаляют все образы, контейнеры и тома без возможности восстановления. Если в томах лежат базы данных, сначала сохраните их через docker cp или дамп самой базы. Свои настройки в /etc/docker/daemon.json пакетный менеджер тоже может оставить, удалите файл вручную, если ставить Docker заново не планируете. Порядок действий взят из официальной инструкции Docker Engine.
Частые вопросы
Чем docker.io отличается от docker-ce?
docker.io собирают мейнтейнеры Ubuntu и Debian, версия отстаёт, а Compose ставится отдельно. docker-ce приходит из репозитория Docker, он свежее и идёт с плагинами compose и buildx. Ставить оба сразу нельзя.
Как запускать docker без sudo?
Выполните sudo usermod -aG docker $USER и перелогиньтесь. Учтите, что группа docker даёт права, равные root. Для общих серверов лучше rootless-режим.
Почему после добавления в группу всё равно permission denied?
Группа применяется при новом входе в систему. Выйдите из сеанса или выполните newgrp docker в текущем терминале, затем проверьте вывод id.
Можно ли установить Docker скриптом get.docker.com?
Можно на тестовой машине. Для рабочих систем Docker рекомендует ручную установку из репозитория, потому что скрипт не спрашивает подтверждений и ставит последнюю версию.
Нужен ли Docker Desktop в Linux?
Обычно нет. Docker Engine работает прямо в системе. Desktop полезен, если нужен графический интерфейс или одинаковая среда с коллегами на macOS и Windows.
Документация и источники
- Install Docker Engine on Ubuntu, Docker Docs, 2026
- Install Docker Engine on Debian, Docker Docs, 2026
- Install Docker Engine on Fedora, Docker Docs, 2026
- Linux post-installation steps for Docker Engine, Docker Docs, 2026
Читайте также
Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.