ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Docker на Linux: установка Engine и пошаговый чеклист для начинающих

Автор: · Обновлено

Для Docker на Linux с нуля нужны три проверки: совместимый дистрибутив, работающий Engine и доступ клиента к нему. Этот пошаговый чеклист предназначен для учебной машины с Ubuntu 24.04 LTS. На Debian, Fedora и других системах используйте соответствующую страницу установки: команды настройки Ubuntu-репозитория туда переносить нельзя.

Engine или Desktop

Docker Engine — служба, которая управляет образами, контейнерами, сетью и томами. Docker Desktop дополнительно даёт графический интерфейс и собственную среду исполнения. На Linux Desktop использует VM; его хранилище отличается от хранилища системного Engine. Два установленных продукта могут показывать разные контейнеры. Перед работой проверьте docker context ls и docker context show, а не считайте отсутствие контейнера потерей данных. Контексты Docker.

Ниже выбран Engine из официального apt-репозитория. Если Docker уже установлен, сначала проверьте версии и происхождение пакетов: не удаляйте работающую установку только ради прохождения урока.

cat /etc/os-release
uname -m
command -v docker
dpkg -l docker-ce docker.io docker-compose-plugin docker-buildx-plugin

Отсутствующие пакеты в последней команде допустимы на новой машине. Конфликтующие пакеты и поддержку конкретного выпуска сверьте со страницей установки Ubuntu. Не используйте случайный скрипт из поисковой выдачи.

Установка на новой Ubuntu

В терминале Bash настройте ключ и источник пакетов:

sudo apt update
sudo apt install ca-certificates curl
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
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
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Engine и CLI — разные пакеты. Buildx нужен для сборок, Compose — для проектов из YAML. Установка только клиента не создаёт работающий сервер. На корпоративной машине настройка репозитория и прокси выполняется по правилам организации.

Проверка по шагам

sudo systemctl is-active docker
sudo docker version
sudo docker run --rm hello-world
docker compose version
docker buildx version

Ожидайте active, две секции версии, приветствие контейнера и версии обоих плагинов. Если служба установлена, но остановлена, на своей учебной машине запустите её sudo systemctl start docker. Если запуск завершился ошибкой, прочитайте sudo journalctl -u docker --since '10 minutes ago': сообщение журнала важнее повторной установки.

Доступ без sudo

Группа docker даёт широкие права управления хостом, фактически сопоставимые с root. Поэтому добавление пользователя — осознанный выбор для личной среды разработки, а не способ «исправить любые permissions». При необходимости изучите rootless-режим отдельно. Модель прав Linux.

Для своей учебной машины можно выполнить sudo usermod -aG docker "$USER", затем полностью выйти из сеанса и войти снова. Проверьте id -nG и docker run --rm hello-world. Не меняйте права сокета на 666: это предоставит управление Engine всем локальным пользователям.

Типовые развилки

СимптомСледующая проверка
docker: command not foundУстановка CLI и PATH
permission denied для сокетаПользователь, группы, выбранный endpoint
Есть Client, нет ServerСлужба, контекст, переменная DOCKER_HOST
compose не команда DockerУстановлен ли Compose plugin для этой CLI
Образ не скачиваетсяDNS, прокси, TLS, доступность реестра

Запишите в чеклист версии Engine, Compose, Buildx и имя контекста. Затем запустите docker run --rm alpine:3.22 echo linux-ready: ожидаемый вывод — linux-ready. Урок завершён, когда вы можете объяснить каждую проверку и повторить её после перезагрузки. Успех одного docker --version недостаточен: он проверяет клиент, но не сервер.

Источники