Как установить Docker на Ubuntu: репозиторий, права и проверка

Linux 27 октябрь 2026 admin

Как установить Docker на Ubuntu: репозиторий, права и проверка

Docker на Ubuntu ставится из официального apt-репозитория Docker: добавляете ключ и строку источника, затем ставите пакеты docker-ce, containerd и плагины. Штатный docker.io из репозиториев Ubuntu тоже работает, но отстаёт по версии. Ниже — рабочая последовательность для 22.04 и 24.04, настройка прав и разбор типичных сбоев.

Установка из официального репозитория Docker

Репозиторий Docker даёт актуальный движок вместе с плагинами buildx и Compose в одном наборе пакетов. Пакеты из репозиториев Ubuntu обновляются вместе с дистрибутивом и потому отстают, а snap-версия живёт в изолированной среде со своими путями. Последовательность ниже не привязана к кодовому имени релиза, поэтому одинаково работает на текущих LTS.

Читайте также: Python 3.12: как скачать и установить на Windows, macOS, Linux, Как создать пользователя в Linux: useradd, пароль и права.

Если раньше ставили docker из репозиториев Ubuntu, эти пакеты конфликтуют с пакетами Docker Inc. Уберите их; образы и контейнеры при удалении пакетов не пропадают — они лежат в /var/lib/docker и /var/lib/containerd.

sudo apt remove docker docker-engine docker.io containerd runc
sudo apt update
sudo apt install -y ca-certificates curl gnupg

Затем добавьте GPG-ключ и сам источник. Ключ кладётся в /etc/apt/keyrings — отдельный каталог для сторонних репозиториев, на который ссылается параметр signed-by.

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

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

Подстановка $VERSION_CODENAME берёт кодовое имя из /etc/os-release, а $(dpkg --print-architecture) — архитектуру (amd64 или arm64). Править строку руками при переходе на новый LTS не нужно.

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world

Приветствие от hello-world означает, что движок запущен и может скачивать образы. sudo в проверке нужен потому, что текущий пользователь ещё не входит в группу docker.

Штатный docker.io, snap и Podman: когда они уместны

Официальный репозиторий — не единственный путь, и в некоторых условиях он недоступен. Сравнение вариантов по практическим признакам:

ВариантЧто даётКогда не подойдёт
Репозиторий DockerСвежий Engine, buildx и Compose v2 одним наборомНет доступа к download.docker.com
docker.io из UbuntuБез внешних источников, обновляется с системойНужны новые возможности движка и актуальный Compose
snap install dockerИзоляция и автообновления через snapdНужен доступ к файлам вне домашнего каталога
PodmanБез демона, rootless по умолчанию, CLI почти совместимИнструментам нужен именно docker.sock

docker.io разумно брать на машинах с жёсткой политикой «только пакеты дистрибутива» и там, где внешние репозитории запрещены. Минус — версия движка и плагина Compose может отличаться от той, что ожидают инструкции и CI-конфиги; проверяйте docker version до того, как повторять чужие команды.

Snap-пакет изолирован: он видит домашний каталог, но с доступом к произвольным путям вроде /srv или монтирования томов бывают сложности. Podman подходит, если нужен rootless-запуск по умолчанию и отказ от постоянного демона, но он не является Docker: сокет /var/run/docker.sock и часть инструментов, завязанных на dockerd, с ним не заработают. Docker Desktop для Linux тоже существует, однако на сервере он не нужен — движок с плагинами даёт тот же результат без виртуальной машины и GUI.

Что сделать после установки

Демон включается в автозапуск и стартует сразу при установке пакета. Состояние и последние записи лога проверяются так:

systemctl status docker
journalctl -u docker -n 50

Чтобы не писать sudo перед каждой командой, добавьте себя в группу docker. Изменение подхватывается только в новой сессии: перезайдите или выполните newgrp docker в текущем терминале.

sudo usermod -aG docker $USER
Членство в группе docker фактически равно root: через контейнер можно смонтировать каталог хоста и получить доступ к системе. На общих машинах и в продакшене вместо этого используют rootless-режим.

Rootless ставится пакетом docker-ce-rootless-extras и настраивается скриптом dockerd-rootless-setuptool.sh install: демон работает от обычного пользователя. Ограничения тоже есть — привилегированные порты ниже 1024 и часть сетевых сценариев требуют дополнительной настройки.

Compose v2 поставляется плагином и вызывается с пробелом: docker compose up -d. Проверка — docker compose version. Старые скрипты с docker-compose через дефис придётся поправить или доставить отдельный бинарник.

Типичные ошибки и вопросы

permission denied while trying to connect to the Docker daemon socket — пользователь не в группе docker либо сессия не перезапущена. Проверьте id -nG: если docker в списке нет, повторите usermod и войдите заново, а не просто откройте новый таб в том же терминале.

Cannot connect to the Docker daemon. Is the docker daemon running? — служба не запущена или упала. sudo systemctl start docker, затем journalctl -u docker -n 100. Частые причины — нехватка места в /var/lib/docker или второй containerd, оставшийся от snap-версии.

E: Conflicting values set for option Signed-By / NO_PUBKEY — ключ лежит не по тому пути, на который указывает signed-by, либо в /etc/apt/sources.list.d/ остался старый файл docker.list. Удалите дубликат и повторите добавление ключа.

Можно ли поставить Docker без интернета? Да: скачанные .deb (docker-ce, docker-ce-cli, containerd.io, плагины) ставятся через sudo dpkg -i, но зависимости придётся разрешать вручную. В закрытом контуре практичнее держать локальное зеркало репозитория.

Начните с официального репозитория и сразу после установки настройте доступ к демону — либо через группу docker с пониманием рисков, либо через rootless-режим. Перед повторением чужих инструкций сверяйте docker version и docker compose version: расхождение в версиях объясняет большую часть «неработающих» команд.

Редакция «ИТ Фишки»
Качественные материалы о софте, технологиях и гаджетах
Ссылка на материал
Поделиться:
Похожие публикации
Комментарии (0)

© Copyright © 2026. Все права защищены.