Справочник

Как установить Docker на Ubuntu

В Ubuntu Docker ставится из пакетов системы одной командой: docker.io — сам Docker, docker-compose-v2 — команда docker compose. Служба запускается сразу и дальше стартует сама при загрузке сервера. Второй способ — репозиторий Docker; выберите что-то одно.

≈ 8 мин чтения
Содержание 11

Что сделать прямо сейчас

Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

  1. Обновите список пакетов: sudo apt update.
  2. Установите Docker и Compose: sudo apt install docker.io docker-compose-v2. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter. На вопрос Do you want to continue? [Y/n] нажмите Y и Enter.
  3. Проверьте службу: sudo systemctl status docker. В ответе должно быть active (running). Выйти из ответа — клавиша Q.
  4. Проверьте, что Docker отвечает: sudo docker ps. В ответе — таблица контейнеров. Пока их нет, в ней только строка с названиями столбцов. Ошибки быть не должно.
  5. Проверьте Compose: docker compose version — в ответе должен быть номер версии.
  6. Если не хотите писать sudo перед каждой командой docker — раздел ниже.

Какая версия поставится

UbuntuВерсия DockerПакеты
24.04Docker 29.1.3docker.io 29.1.3 и docker-compose-v2 2.24.6
26.04Docker 29.1.3docker.io 29.1.3 и docker-compose-v2 2.40.3

Номера версий взяты со страниц пакетов Ubuntu на 14 октября 2026 года: с обновлениями они растут. Какая Ubuntu стоит у вас — как узнать. Версию Docker на сервере покажет docker --version.

Документация Ubuntu Server пишет, что пакеты docker.io поддерживает Canonical — компания, которая выпускает Ubuntu. Обновления для них приходят вместе с обновлениями системы: sudo apt update, затем sudo apt upgrade.

Какой способ выбрать

СпособПакетыКак ставить
пакеты Ubuntudocker.io и docker-compose-v2одной командой apt, как на этой странице
репозиторий Dockerdocker-ce и docker-compose-pluginпо официальной инструкции для Ubuntu: в ней сначала подключают репозиторий, потом ставят пакеты

Из репозитория Docker приходят самые свежие версии, и сам Docker советует ставить так — этот путь разобран в разделе Docker на сервере: пять настроек сразу. Пакеты Ubuntu проще: одна команда, и обновления вместе с системой.

Выберите один способ. Пакеты из двух источников конфликтуют между собой.

Не помните, как ставили Docker раньше? Посмотрите:

apt list --installed 2>/dev/null | grep docker

Строка docker.io значит, что Docker из пакетов Ubuntu, а docker-ce — из репозитория Docker. Пустой ответ — через apt Docker не ставили.

Docker без sudo

После установки команды docker работают только через sudo: управлять Docker могут root и участники группы docker. Саму группу пакет создаёт при установке. Чтобы писать команды без sudo, добавьте в неё своего пользователя:

sudo usermod -aG docker $USER

Затем выйдите с сервера командой exit и подключитесь снова: группа начинает действовать после нового входа. Проверьте: docker ps без sudo должна ответить таблицей, без ошибки доступа. Если ошибка осталась — разбор permission denied.

Группа docker даёт права уровня root: кто управляет Docker, может получить полный доступ к серверу. Добавляйте в неё только тех, кому вы доверили бы root. Не хотите рисковать — пишите sudo перед командами docker, как в примерах на этой странице.

Запуск после перезагрузки

Служба docker включена сразу: после перезагрузки сервера она поднимается сама. Контейнеры — нет: по умолчанию у них политика перезапуска no. Политику задают каждому контейнеру:

ПолитикаКогда контейнер поднимается сам
noне поднимается — так по умолчанию
on-failureкогда программа в контейнере завершилась с ошибкой
alwaysпосле любой остановки. Если вы остановили его сами — после перезапуска Docker или сервера
unless-stoppedкак always, но контейнер, который вы остановили сами, остаётся остановленным и после перезагрузки

Для сайтов и ботов подходит unless-stopped. Уже созданному контейнеру её задаёт команда:

sudo docker update --restart unless-stopped myapp

Вместо myapp — имя контейнера из последнего столбца NAMES в ответе sudo docker ps -a. Новому контейнеру политику задают сразу: флаг --restart unless-stopped у docker run или строка restart: unless-stopped у сервиса в compose-файле.

Что будет при обновлении Docker

Когда пакет docker.io обновляется, а Docker в этот момент работает, apt может спросить, перезапустить ли Docker сразу. Ответ по умолчанию — нет.

  • Да: Docker перезапустится и остановит работающие контейнеры. Снова поднимутся те, у которых задана политика перезапуска, — остальные запустите сами.
  • Нет: работает прежняя версия. Новая заработает, когда вы перезапустите Docker командой sudo systemctl restart docker в удобное время или перезагрузите сервер.

Пока Docker не перезапущен после обновления, у него могут быть сбои с запуском новых контейнеров, поэтому не откладывайте перезапуск надолго.

Где настройки и данные

ЧтоГде
настройки Docker/etc/docker/daemon.json
образы, контейнеры и томав папке /var/lib/docker/, тома — в /var/lib/docker/volumes/
журнал службыsudo journalctl -u docker
что вывел контейнерsudo docker logs myapp
сколько места заняли образы и контейнерыsudo docker system df

После правки daemon.json перезапустите Docker: sudo systemctl restart docker. Логи контейнеров Docker по умолчанию не ограничивает — как задать предел, в разделе Ограничьте логи. Если диск заполнился — что можно удалить.

Порты и фаервол

Порт, который контейнер публикует (-p 8080:80 у docker run или ports: в compose-файле), открывается для всего интернета в обход правил ufw. Привязывайте такие порты к 127.0.0.1, а посетителей пускайте через nginx — как это сделать.

Ошибки и как их исправить

Что видитеЧто делать
permission denied while trying to connectнет прав на docker.sock
Cannot connect to the Docker daemonслужба Docker не запущена
port is already allocatedпорт занят
имя контейнера уже занято: is already in useразбор
exec format errorобраз собран для другого процессора
docker-compose: command not foundкак поставить Compose
pull access deniedобраз не скачивается
no space left on deviceDocker занял диск
контейнер сразу останавливается, Exited (1)разбор
Unable to locate package docker.ioapt не нашёл пакет

Все разборы — в разделе Ошибки Docker.

Источники

Сверено 14 октября 2026 года.

Что почитать дальше