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

Установка Docker на Ubuntu 20.04 — пошаговое руководство

6 min read DevOps Обновлено 24 Dec 2025
Установка Docker на Ubuntu 20.04
Установка Docker на Ubuntu 20.04

Docker: контейнеры и окружение разработки

О чём эта инструкция

Это руководство предназначено для инженеров и разработчиков, которые хотят установить Docker на Ubuntu 20.04 LTS. Если вы уже используете другие версии Ubuntu или другие дистрибутивы, команды будут похожи, но возможны отличия в названиях пакетов и репозиториев.

Коротко о терминах:

  • Docker: платформа для упаковки, доставки и запуска приложений в контейнерах. Контейнер — изолированное окружение приложения с зависимостями.
  • Docker Engine: серверная часть, управляющая контейнерами.
  • Docker Hub: реестр образов (registry).

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

Docker упрощает разработку и доставку приложений, обеспечивает предсказуемое окружение и экономит ресурсы по сравнению с виртуальными машинами. Ключевые плюсы:

  • Простота использования и быстрая интеграция в CI/CD.
  • Консистентность окружений между локальной машиной, тестом и продом.
  • Подходит для микросервисной архитектуры.
  • Низкое потребление ресурсов по сравнению с виртуальными машинами.

Важно: Docker не заменяет виртуальные машины в задачах, где требуется полная изоляция ядра или отдельная ОС на каждом экземпляре.

Требования и подготовка

Перед установкой:

  • Ubuntu 20.04 LTS с актуальными обновлениями.
  • Пользователь с правами sudo.
  • Доступ в интернет для загрузки пакетов и ключей GPG.
  • Если у вас ARM‑устройство (Raspberry Pi, Apple Silicon через эмуляцию и т.п.), учтите архитектуру пакетов (см. примечания ниже).

Обновите индексы пакетов:

sudo apt update
sudo apt upgrade -y

Настройка репозитория Docker (рекомендуемый способ)

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

  1. Установите зависимости для работы HTTPS‑репозиториев и проверки подписей:
sudo apt install -y 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
  1. Добавьте стабильный репозиторий Docker (для amd64). Для ARM замените arch=amd64 на arch=arm64 или arch=armhf в зависимости от платформы:
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

Примечание: $(lsb_release -cs) вернёт кодовое имя релиза (focal для Ubuntu 20.04). Убедитесь, что вы используете правильное значение для вашей версии Ubuntu.

Установка Docker Engine

Обновите список пакетов и установите Docker Engine и вспомогательные компоненты:

sudo apt update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

Если нужна конкретная версия Docker, отобразите доступные билды и установите выбранную версию:

apt-cache madison docker-ce

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

Пример установки конкретной версии (замените версию на ту, что вы выбрали):

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

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

Проверьте версию установленного Docker:

docker -v

Запустите тестовый контейнер hello-world, чтобы убедиться, что Docker может загружать и запускать образы:

sudo docker run hello-world

Запуск образа hello-world в Docker — вывод команды

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

Запуск Docker без sudo

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

  1. Создайте группу docker и добавьте в неё пользователя:
sudo groupadd docker
sudo usermod -aG docker $USER
  1. Примените изменения группы в текущей сессии:
newgrp docker
  1. Если интерфейс GNOME, можно выйти и зайти снова:
gnome-session-quit

Экран выхода из Ubuntu

Если после выхода и повторного входа права всё ещё не применены, перезагрузите систему.

Важно: добавление пользователя в группу docker даёт ему привилегии, близкие к root. Рассмотрите альтернативы (rootless mode) для повышения безопасности.

Удаление Docker

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

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

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

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

Будьте внимательны: эти команды безвозвратно удаляют все образы и контейнеры.

Быстрая справка: часто используемые команды

Команды для повседневной работы:

# Запустить контейнер
docker run --name myapp -d nginx:latest

# Список запущенных контейнеров
docker ps

# Список всех контейнеров
docker ps -a

# Просмотр логов контейнера
docker logs -f myapp

# Остановка и удаление контейнера
docker stop myapp
docker rm myapp

# Удаление образа
docker rmi nginx:latest

# Список образов
docker images

Часто используемые флаги: -d (демон), -p HOST:CONTAINER (проброс портов), -v HOST:CONTAINER (монтаж томов).

Рекомендации по безопасности

  • По возможности используйте rootless mode (запуск демона Docker без root) для снижения прав доступа.
  • Ограничьте доступ к сокету Docker (/var/run/docker.sock) и избегайте предоставления его напрямую в контейнеры.
  • Регулярно обновляйте Docker Engine через официальный репозиторий.
  • Сканиpуйте образы на уязвимости перед использованием в производстве.
  • Используйте минимальные базовые образы и запуск контейнеров с непривилегированными пользователями.

Отладка и распространённые проблемы

Проблема: docker не запускается после установки

  • Проверьте статус сервиса:
sudo systemctl status docker
  • Посмотрите журналы демона:
journalctl -u docker --no-pager

Проблема: нет прав на сокет

  • Убедитесь, что пользователь добавлен в группу docker и что вы перезапустили сессию.

Проблема: образы не скачиваются (TLS/GPG или сеть)

  • Проверьте, доступен ли https://download.docker.com из вашей сети.
  • Убедитесь, что GPG ключ корректно установлен и файл /usr/share/keyrings/docker-archive-keyring.gpg существует.

Когда Docker не подходит

  • Если вам требуется изоляция на уровне виртуальной машины (разные ядра, полный контроль ОС), Docker не заменит виртуальные машины.
  • Для контейнеризации системных сервисов, которые напрямую зависят от systemd, требуется дополнительная конфигурация.

Альтернативы и сравнение

  • Podman: бездемоновый движок, совместимый с образами Docker и с поддержкой rootless по умолчанию. Хорошая альтернатива при требованиях безопасности.
  • LXC/LXD: более «системная» контейнеризация, подходит для запуска целых систем в контейнерах.

Выбор зависит от требований безопасности, совместимости с существующими CI/CD и опыта команды.

Чек-лист для ролей

Для разработчика:

  • Установлен Docker и проверен hello-world
  • Понимаю, как запускать контейнеры локально
  • Образы храню в приватном реестре или Docker Hub с тегами

Для DevOps/инженера по доставке:

  • Репозиторий Docker добавлен и подписан GPG
  • Настроен автоматический процесс сборки и пуша образов
  • Настроены сканеры уязвимостей и политика обновлений

Для администратора сервера:

  • Мониторинг и логирование контейнеров подключены
  • Управление ресурсами (cgroups) ограничено
  • План резервного копирования томов и данных

Тесты приёмки и критерии приёмки

Критерии приёмки:

  • Команда docker -v возвращает версию Docker.
  • sudo docker run hello-world выполняется успешно и выводит подтверждение.
  • Обычный пользователь, добавленный в группу docker, может запускать docker ps без sudo.
  • При удалении пакетов Docker пакеты удалены, а при удалении директорий не осталось данных Docker.

Минимальные тесты:

  • Установить, запустить простой nginx контейнер, получить HTTP 200 от контейнера на проброшенном порту.

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

  • Переход на более новые версии Ubuntu (например, на Ubuntu 22.04) обычно проходит гладко, но проверьте поддержку официальных сборок Docker для вашей архитектуры.
  • На ARM‑устройствах используйте репозиторий с arch=arm64/armhf или установите пакеты из дистрибутивных репозиториев, если официальная поддержка отсутствует.

Шпаргалка для быстрого восстановления

Если Docker перестал работать:

  1. Проверить статус systemd:
sudo systemctl status docker
  1. Просмотреть журналы docker и systemd:
journalctl -u docker -n 200
  1. Попробовать перезапустить сервис:
sudo systemctl restart docker
  1. Если проблема связана с данными, временно переместите /var/lib/docker и запустите демон, чтобы проверить чистую установку:
sudo mv /var/lib/docker /var/lib/docker.bak
sudo systemctl restart docker

Краткое резюме

Docker на Ubuntu 20.04 устанавливается через официальный репозиторий Docker. После добавления GPG‑ключа и репозитория вы можете установить docker-ce, проверить установку командой docker -v и запустить тестовый контейнер hello-world. Для удобства можно добавить пользователя в группу docker, но учтите риски безопасности. Рассмотрите альтернативы (Podman) и следите за обновлениями и политиками безопасности.

Важно: всегда тестируйте обновления на стенде перед применением в продакшн и храните критичные данные вне контейнерных томов или используйте стабильную стратегию бэкапов.


Если нужно, подготовлю отдельный короткий плейбук Ansible для автоматизации установки или добавлю инструкции для Ubuntu 22.04 / Debian 11.

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

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

Как складывать числа в Excel
Excel

Как складывать числа в Excel

Возврат денег за игру в Steam — пошагово
Игры

Возврат денег за игру в Steam — пошагово

Neovim в IDE: полное руководство для Linux
Разработка

Neovim в IDE: полное руководство для Linux

Как поделиться Reels из Instagram в Facebook
Социальные сети

Как поделиться Reels из Instagram в Facebook

Скриншот на Mac без клавиатуры
macOS

Скриншот на Mac без клавиатуры

3D AR‑персонажи Google для Хэллоуина
Технологии

3D AR‑персонажи Google для Хэллоуина