deшка
Урок 5.2

Практика: установка Docker

WSL 2, Docker Desktop и Docker Engine; проверяем запуск контейнера.

Для работы нужны три вещи: клиент docker, служба Docker Engine и команда docker compose. Клиент передаёт команды, Engine запускает контейнеры, Compose читает описание окружения. На Windows и macOS удобнее получить их вместе с Docker Desktop. Для отдельной Linux-машины можно установить Engine и Compose без графического интерфейса.

Команды установки ниже выполняются на вашем компьютере, вне учебного терминала. Выберите свой вариант установки. Образы и данные занимают место на диске, а запущенные программы используют память компьютера. Одна учебная PostgreSQL и кластер из нескольких служб требуют разного объёма ресурсов. Начните с маленького стенда и проверяйте его потребление; оставляйте память основной системе.

Где работает Engine: в Linux-среде Desktop на Windows и macOS или непосредственно на Linux-хосте.

Windows: готовим Linux через WSL 2

В roadmap используются Linux-контейнеры. WSL 2 предоставляет на Windows Linux-окружение с настоящим Linux-ядром. Это удобно и для Docker, и для команд лабораторий: вы работаете в Ubuntu с Bash, а редактор и браузер могут оставаться в Windows.

Если виртуализация выключена, включите её в BIOS/UEFI. Состояние видно в диспетчере задач Windows в разделе CPU. Затем откройте PowerShell от имени администратора:

wsl --install -d Ubuntu

Если потребуется, перезагрузите компьютер. Откройте Ubuntu из меню «Пуск» и создайте Linux-пользователя. Символы пароля в терминале не отображаются — это нормальное поведение. В PowerShell проверьте установленное окружение:

wsl --update
wsl --list --verbose

У Ubuntu должна быть версия 2. Если существующий дистрибутив работает в режиме 1, используйте wsl --set-version Ubuntu 2, подставив точное имя из списка.

Установите Docker Desktop для Windows под свой процессор и поддерживаемую версию Windows. Запустите приложение, включите WSL 2 engine и в Resources → WSL Integration разрешите интеграцию с Ubuntu. Должен быть выбран режим Linux containers.

Теперь откройте новый терминал Ubuntu. Отдельно ставить Engine через apt в этой Ubuntu не нужно: его предоставляет Desktop. Два разных Engine имеют разные контейнеры и тома, поэтому их легко перепутать. Папки Linux-проектов удобно хранить в ~/de-labs внутри WSL: это уменьшает проблемы с правами и лишние файловые операции через /mnt/c.

macOS: выбираем подходящий Desktop

Скачайте Docker Desktop для Mac, выбрав Apple Silicon или Intel. Перенесите приложение в Applications, запустите и дождитесь готовности Engine. Linux-контейнеры будут работать в Linux-виртуальной машине Desktop.

Выделенная ей память и диск ограничивают размеры лабораторий. На Apple Silicon предпочтительны образы для ARM64. Образ только для AMD64 иногда можно запустить через эмуляцию, но это может быть медленнее. Однострочные команды выполняются в Terminal; для примеров с Bash можно сначала выполнить bash.

Ubuntu: устанавливаем Engine

Команды ниже предназначены для отдельной Ubuntu 24.04 LTS без уже установленного Docker и конфликтующих контейнерных пакетов. Это не дополнительная установка внутри WSL с настроенным Docker Desktop. Если Docker уже есть, сначала проверьте его по последнему разделу главы.

Подготовьте ключ официального репозитория пакетов:

sudo apt update
sudo apt install -y ca-certificates curl
sudo install -d -m 0755 /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

Затем добавьте источник пакетов, учитывая выпуск Ubuntu и архитектуру процессора:

. /etc/os-release
printf 'Types: deb\nURIs: https://download.docker.com/linux/ubuntu\nSuites: %s\nComponents: stable\nArchitectures: %s\nSigned-By: /etc/apt/keyrings/docker.asc\n' "$VERSION_CODENAME" "$(dpkg --print-architecture)" | sudo tee /etc/apt/sources.list.d/docker.sources
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
sudo docker run --rm hello-world

docker-ce устанавливает Engine, docker-ce-cli — клиент, containerd.io — компонент выполнения контейнеров. Buildx нужен для сборок, Compose plugin — для команд docker compose. systemctl enable --now запускает службу и включает её автозапуск.

Для Debian, Fedora и других систем используйте соответствующий вариант установки Docker Engine. Репозиторий Ubuntu нельзя подставлять вместо репозитория любого Linux-дистрибутива.

На Linux можно выполнять команды через sudo. Другой вариант — добавить пользователя в группу docker:

sudo usermod -aG docker "$USER"

После этого выйдите из сеанса пользователя и войдите снова. Доступ к обычному Engine через эту группу фактически даёт административные возможности на хосте; на рабочей машине порядок доступа определяет администратор.

Проверяем клиент, Engine и первый запуск

docker version
docker compose version
docker run --rm hello-world

В первой команде нужны разделы Client и Server. Только Client означает, что утилита установлена, но связь со службой ещё не подтверждена. Вторая команда проверяет Compose plugin. Третья скачивает маленький образ, создаёт контейнер и выполняет его программу.

hello-world печатает сообщение и завершается. Благодаря --rm контейнер удаляется, образ остаётся. Так выглядит успешное выполнение короткой программы. Если появилось Cannot connect to the Docker daemon, проверьте готовность Desktop или службы и выбранный docker context. Если не скачивается образ, проверяйте сеть, прокси и доступ к реестру.

В roadmap используется команда с пробелом: docker compose. На рабочем компьютере согласуйте установку с администратором.

От одноразовой проверки к службе

После hello-world полезно проверить длительно работающую программу. Образ PostgreSQL при первом запуске пустой базы требует пароль:

docker run -d --name local-check -e POSTGRES_PASSWORD=study-only-password postgres:17
docker exec local-check pg_isready
docker stop local-check
docker rm local-check

-e передаёт настройку программе. pg_isready сообщает, принимает ли сервер подключения; сразу после запуска ему может понадобиться несколько секунд. Последние команды останавливают и удаляют только этот проверочный экземпляр. Для хранения настоящих учебных таблиц позднее подключим отдельный том.

Попробуйте в учебном терминале

Песочница уже подготовлена: устанавливать WSL, Desktop или пакеты в ней не нужно. Отработайте проверку после установки: скачайте hello-world, сохраните завершённый проверочный контейнер и запустите PostgreSQL. Это проверяет навык работы с командами; состояние Docker на вашем компьютере проверяют команды из инструкции выше.

Здесь команды Docker имитируются: терминал хранит учебное состояние образов, контейнеров и файлов. Реальные службы и внешнюю сеть он не запускает.

учебный терминалзадания 0 / 3
Введите команду. Подсказка: help покажет, что умеет этот терминал.
de@deshka:~$
ЗАДАНИЯ
  1. 1. Подготовьте образ hello-world:latest для проверки установки.
  2. 2. Запустите hello-world:latest с именем installation-check; оставьте объект для просмотра.
  3. 3. Поднимите readiness из postgres:17 с POSTGRES_PASSWORD=study-only-password.
решённые задания сохранятся в прогресс после входа
Войти, чтобы отмечатьдальше →
5.3 →Где брать образы: Docker Hub, теги и архитектуры