Гид по технологиям

Установка Docker на Ubuntu 20.04 (Focal Fossa)

6 min read Контейнеризация Обновлено 24 Apr 2026
Установка Docker на Ubuntu 20.04 — пошагово
Установка Docker на Ubuntu 20.04 — пошагово

Docker упрощает развёртывание и локальную разработку. В этой инструкции шаг за шагом показано, как добавить репозиторий Docker, установить Docker Engine на Ubuntu 20.04, запустить тестовый контейнер, настроить запуск без sudo и удалить Docker при необходимости. Включены советы по безопасности, отладке и альтернативы для продакшена.

Иллюстрация контейнеризации Docker на рабочем столе

Почему Docker полезен

Docker — это открытая платформа для упаковки приложений в контейнеры. Контейнеры изолируют приложение и его зависимости, но не требуют полной виртуализации ОС, поэтому они легче по ресурсам, чем виртуальные машины.

Преимущества Docker кратко:

  • Простота использования и обучения.
  • Единообразные окружения между разработкой, тестами и продакшеном.
  • Хорошо сочетается с микросервисной архитектурой.
  • Низкая нагрузка на ресурсы по сравнению с виртуальными машинами.

Важно: контейнеры не заменяют виртуальные машины во всех сценариях. Они дают изоляцию на уровне процесса и ядра ОС.

Кому это руководство

Кратко:

  • Разработчикам, желающим локально запускать сервисы в контейнерах.
  • DevOps-инженерам, настраивающим Docker в Ubuntu 20.04.
  • Тем, кто хочет понять базовую безопасность и управление Docker.

Если вы на ARM-устройстве (например, Raspberry Pi), читайте раздел про архитектуры ниже.

Подготовка: обновление списков пакетов

Перед установкой хорошая практика — обновить индексы пакетов:

sudo apt update

Это гарантирует, что apt увидит добавленный вами репозиторий Docker.

Добавление репозитория Docker

Мы будем устанавливать Docker из официального репозитория Docker. Это позволяет проще получать обновления и устанавливать конкретные версии.

  1. Установите зависимости для работы репозиториев по HTTPS:
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
  1. Добавьте официальный GPG-ключ Docker в хранилище ключей:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

GPG (или GnuPG) — это реализация стандарта PGP для подтверждения подписи пакетов.

  1. Подключите стабильный репозиторий Docker. Команда использует кодовое имя вашей Ubuntu (lsb_release -cs).
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Примечание: если у вас ARM-архитектура, замените arch=amd64 на arch=arm64 или arch=armhf.

Важно: внимательно проверяйте синтаксис команды echo — кавычки и путь к keyring обязательны.

Установка Docker Engine

  1. Обновите индексы пакетов после добавления репозитория:
sudo apt update
  1. Установите Docker Engine и сопутствующие пакеты:
sudo apt-get install docker-ce docker-ce-cli containerd.io

Эта команда по умолчанию поставит последнюю стабильную версию.

Если нужен конкретный релиз, сначала посмотрите доступные версии:

apt-cache madison docker-ce

Вывод apt-cache madison со списком доступных версий Docker

Затем установите нужную версию явно, например:

sudo apt-get install docker-ce=5:20.10.6~3-0~ubuntu-focal docker-ce-cli=5:20.10.6~3-0~ubuntu-focal containerd.io

Совет: фиксируйте версии в production-скриптах, чтобы избежать неожиданных изменений после обновлений.

Подтверждение установки

Проверьте версию Docker:

docker -v

Служба Docker обычно автоматически запускается при загрузке системы в Ubuntu и других Debian-подобных дистрибутивах.

Протестируйте установку, запустив официальный тестовый образ hello-world. Он загрузится из Docker Hub и выполнит небольшую проверку:

sudo docker run hello-world

Команда sudo docker run hello-world в терминале

Если вывод сообщает, что контейнер успешно запущен, установка прошла корректно.

Запуск Docker без sudo (не-root пользователь)

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

sudo groupadd docker
sudo usermod -aG docker $USER

Активируйте изменения группы в текущем сеансе:

newgrp docker

Выйдите из сеанса и зайдите снова или перезагрузите систему, чтобы изменения вступили в силу. На рабочем столе GNOME можно выйти через графический интерфейс:

gnome-session-quit

Экран выхода Ubuntu (настройки завершения сеанса)

Если после повторного входа docker команды всё ещё требуют sudo, попробуйте перезагрузить систему.

Безопасность: добавление пользователя в группу docker даёт ему фактически root-права в контексте Docker. Думайте об этом при предоставлении доступа коллегам.

Удаление Docker

Чтобы удалить пакеты Docker:

sudo apt remove docker docker-engine docker.io containerd runc

Это удалит пакеты, но не данные (образы, контейнеры, тома). Чтобы удалить все данные Docker вручную:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

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

Практические рекомендации и лучшие практики

  • Используйте docker-compose или Kubernetes для оркестрации нескольких сервисов.
  • В продакшене рассмотрите запуск контейнеров под минимальными привилегиями и с ограничением ресурсов (cgroups).
  • Храните образы в частном реестре (Harbor, AWS ECR, GCR) для контроля версий и безопасности.
  • Регулярно обновляйте контейнеры и зависимости, тестируя изменения в staging.

Безопасность Docker — минимальный чеклист

  1. Не запускайте контейнеры с флагом –privileged без крайней необходимости.
  2. Используйте официальные или проверенные базовые образы.
  3. Сканируйте образы на уязвимости (например, Trivy, Clair).
  4. Ограничивайте доступ к Docker сокету (/var/run/docker.sock).
  5. Применяйте механизмы контроля доступа в реестре образов.

Отладка: что делать, если что-то пошло не так

  • Docker не запускается: проверьте статус службы
systemctl status docker
  • Процесс контейнера упал: смотрите логи контейнера
docker logs 
  • Проблемы с сетью: проверьте docker network ls и docker network inspect.
  • Ошибка доступа к сокету: проверьте группу docker и права на /var/run/docker.sock.

Когда Docker не подходит (контрпримеры)

  • Если нужно полное разделение ядра и ОС — используйте виртуальные машины.
  • На Windows с GUI-интенсивными приложениями контейнеры не всегда подходят.
  • Если требуется сильная изоляция по безопасности на уровне гипервизора, контейнеры будут недостаточны.

Альтернативы и их плюсы/минусы

  • Podman: демонструет совместимость с командами Docker CLI, работает без демона и по умолчанию безопаснее для rootless-сценариев.
  • LXC/LXD: ближе к системе и даёт больше контроля над окружением, но сложнее в упаковке приложений.
  • Vagrant + VM: полезно для воспроизводимости окружений, когда контейнеры не покрывают все требования.

Рекомендация: для локальной разработки и большинства CI задач Docker остаётся наиболее удобным выбором.

Советы для ARM-устройств (Raspberry Pi и т.п.)

  • Используйте arch=arm64 или arch=armhf при добавлении репозитория.
  • Проверяйте совместимость образов — многие образы предоставляют multi-arch теги.
  • На слабых устройствах контролируйте лимиты памяти и CPU.

Критерии приёмки (как проверить корректность установки)

  1. docker -v возвращает ожидаемую версию.
  2. sudo docker run hello-world успешно выполняется и завершает работу.
  3. Обычный пользователь (в группе docker) может запускать docker ps без sudo.
  4. Служба docker стартует автоматически после перезагрузки.

Короткий SOP для установки (шпаргалка)

  1. sudo apt update
  2. sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
  3. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  4. echo “deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  5. sudo apt update
  6. sudo apt-get install docker-ce docker-ce-cli containerd.io
  7. sudo groupadd docker && sudo usermod -aG docker $USER && newgrp docker

Роль‑ориентированные чек-листы

Разработчик:

  • Установил Docker локально.
  • Запустил приложение в контейнере и проверил логи.
  • Создал Dockerfile и локально собрал образ.

DevOps:

  • Настроил CI для сборки и пуша образов в приватный реестр.
  • Ограничил ресурсы контейнеров и настроил мониторинг.

SRE:

  • Настроил оркестрацию (Kubernetes) и политики безопасности.
  • Обеспечил резервное копирование контейнерных данных.

Мини-глоссарий (1 строка на термин)

  • Контейнер: изолированный процесс с зависимостями приложения.
  • Docker Engine: основной компонент, управляющий контейнерами.
  • Docker Hub: публичный реестр образов.
  • GPG: механизм подписи пакетов для проверки подлинности.

Совместимость и миграция

  • Для перехода с Docker на Podman обычно достаточно заменить CLI-утилиты и проверить CI-пайплайны.
  • При миграции на Kubernetes потребуется описать сервисы в манифестах (Deployment, Service, ConfigMap).

Риски и смягчения

  • Риск: компрометация /var/run/docker.sock даёт привилегии. Смягчение: ограничьте доступ и используйте механизмы RBAC.
  • Риск: уязвимый базовый образ. Смягчение: сканируйте образы и подписывайте их.

Заключение

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

Краткая инструкция:

  • Добавьте репозиторий Docker и GPG-ключ.
  • Установите docker-ce, docker-ce-cli и containerd.io.
  • Проверьте установку и настройте запуск без sudo.

Если нужно, используйте альтернативы (Podman) или оркестрацию (Kubernetes) для продакшен-окружений.

Примечание: всегда проверяйте официальную документацию Docker при возникновении сомнений или при работе с другими версиями Ubuntu.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

KDE Connect: связать Android и Linux
Linux

KDE Connect: связать Android и Linux

Как перейти от новичка к фотографу среднего уровня
Фотография

Как перейти от новичка к фотографу среднего уровня

Уведомления о камере в Windows 11
Конфиденциальность

Уведомления о камере в Windows 11

Ускорение передачи данных на внешние диски
Windows

Ускорение передачи данных на внешние диски

Родительский контроль Xbox: настройка через Family Settings
Руководство

Родительский контроль Xbox: настройка через Family Settings

Поиск песни по тексту в Apple Music
Музыка

Поиск песни по тексту в Apple Music