Установка Docker Engine в Ubuntu
Пошаговая установка Docker Engine и Docker Compose в Ubuntu из официального репозитория с проверкой сервиса и тестовым контейнером.
Docker позволяет запускать приложения в изолированных контейнерах и управлять ими через единый набор команд. В этой инструкции рассматривается только установка Docker Engine и Docker Compose из официального репозитория Docker.
Проверено на: Ubuntu Server 24.04 LTS
Уровень сложности: начальный
Время выполнения: около 10–15 минут
Требуемый доступ: пользователь с правамиsudo
Что будет установлено
В результате на сервере появятся:
- Docker Engine;
- Docker CLI;
- containerd;
- Docker Buildx;
- Docker Compose Plugin.
Проверка системы
Проверьте версию Ubuntu и архитектуру:
cat /etc/os-release
dpkg --print-architecture
Для большинства VPS ожидается:
VERSION_ID="24.04"
amd64
Удаление конфликтующих пакетов
Перед установкой удалите пакеты, которые могут конфликтовать с официальной версией Docker:
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc
do
sudo apt-get remove -y "$pkg" 2>/dev/null || true
done
Если пакеты не были установлены, команда завершится без критических ошибок.
Установка необходимых компонентов
Обновите индекс пакетов:
sudo apt update
Установите зависимости:
sudo apt install -y ca-certificates curl gnupg
Добавление GPG-ключа Docker
Создайте каталог для ключей:
sudo install -m 0755 -d /etc/apt/keyrings
Загрузите официальный GPG-ключ:
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 >/dev/null <<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
Проверьте, что пакет Docker берётся из официального репозитория:
apt-cache policy docker-ce
В выводе должен присутствовать адрес:
https://download.docker.com/linux/ubuntu
Установка Docker Engine
Установите Docker и дополнительные плагины:
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Запуск и автозагрузка
Включите Docker:
sudo systemctl enable --now docker
Включите containerd:
sudo systemctl enable --now containerd
Проверьте состояние Docker:
sudo systemctl status docker --no-pager
Ожидаемый статус:
Active: active (running)
Проверка версий
Проверьте Docker Engine:
docker version
Проверьте Docker Compose:
docker compose version
Запуск тестового контейнера
Запустите официальный тестовый образ:
sudo docker run --rm hello-world
Ожидаемое сообщение:
Hello from Docker!
Это подтверждает, что:
- клиент подключается к Docker daemon;
- образ загружается из Docker Hub;
- контейнер создаётся и запускается;
- вывод контейнера передаётся в терминал.
Запуск Docker без sudo
По умолчанию доступ к Docker socket имеет только root и группа docker.
Добавьте текущего пользователя в группу:
sudo usermod -aG docker "$USER"
Полностью завершите SSH-сессию:
exit
Подключитесь снова и проверьте группы:
id
В списке должна появиться группа:
docker
Проверьте работу без sudo:
docker ps
Важно: группа
dockerпредоставляет привилегии, сопоставимые с root. Добавляйте в неё только доверенных пользователей.
Проверка Docker socket
Проверьте права:
ls -l /var/run/docker.sock
Ожидаемый результат:
srw-rw---- 1 root docker ... /var/run/docker.sock
Проверка Docker Compose
Создайте тестовый каталог:
mkdir -p ~/docker-test
cd ~/docker-test
Создайте файл compose.yaml:
cat >compose.yaml <<'EOF'
services:
web:
image: nginx:alpine
ports:
- "8080:80"
EOF
Запустите контейнер:
docker compose up -d
Проверьте состояние:
docker compose ps
Проверьте ответ локально:
curl -I http://127.0.0.1:8080
Остановите и удалите тестовый контейнер:
docker compose down
Удалите тестовый каталог:
cd ~
rm -rf ~/docker-test
Просмотр информации о Docker
Основная информация:
docker info
Список контейнеров:
docker ps -a
Список образов:
docker images
Использование диска:
docker system df
Обновление Docker
Docker обновляется через APT вместе с другими пакетами:
sudo apt update
sudo apt upgrade
Проверьте доступные версии:
apt-cache madison docker-ce
Удаление тестового образа
После проверки можно удалить hello-world:
docker image rm hello-world
Типичные проблемы
Permission denied при обращении к Docker socket
Проверьте группы текущей сессии:
id
Если группа docker уже назначена, полностью выйдите из SSH и подключитесь снова.
Временно можно выполнить:
newgrp docker
Docker не запускается
Проверьте сервис:
sudo systemctl status docker --no-pager
Проверьте журнал:
sudo journalctl -u docker -n 100 --no-pager
Не загружаются образы
Проверьте DNS и доступ к Docker Hub:
getent hosts registry-1.docker.io
curl -I https://registry-1.docker.io
Порт тестового контейнера недоступен
Проверьте публикацию порта:
docker compose ps
Проверьте локальный ответ:
curl -I http://127.0.0.1:8080
Если доступ нужен извне, разрешите порт в firewall отдельно.
Итог
После выполнения инструкции:
- подключён официальный репозиторий Docker;
- установлен Docker Engine;
- установлен Docker Compose Plugin;
- сервисы добавлены в автозагрузку;
- выполнен запуск тестового контейнера;
- при необходимости настроена работа Docker без
sudo.
Настройку хранения данных, ротации логов, сетей, reverse proxy и резервного копирования контейнеров следует выполнять отдельно.