Главная/Подготовка среды/Обзор

Раздел 1. Подготовка среды

Раздел даёт рабочую среду, на которой строится весь остальной курс: проверенную Linux-систему, установленный из официального репозитория Docker Engine, понимание того, чем управляет systemctl, и осознанное решение по вопросу «работать через группу docker или через rootless mode».

Это единственный раздел, где вы устанавливаете программное обеспечение. Всё остальное время курс работает с уже установленным Docker. Поэтому здесь важно не просто выполнить команды, а понять, что именно появилось в системе: какой daemon запущен, от какого пользователя, каким сокетом он управляется и кто имеет к нему доступ.

Цели обучения

После раздела учащийся сможет:

  • проверить, что его система пригодна для Docker: architecture, версия kernel, cgroup version, наличие нужных модулей;
  • установить Docker Engine, Docker CLI, Buildx и Compose plugin из официального apt repository;
  • удалить конфликтующие пакеты, установленные ранее из репозитория дистрибутива;
  • управлять Docker daemon через systemctl и читать его логи через journalctl;
  • объяснить, что такое /var/run/docker.sock и почему доступ к нему равносилен правам root на host;
  • запустить первый container и прочитать вывод docker version, docker info, docker system df;
  • установить и запустить rootless Docker, понимая его ограничения;
  • полностью удалить Docker вместе с данными, если это потребуется.

Предварительные знания

  • Linux command line: навигация, чтение файлов, конвейеры;
  • sudo и понимание того, что такое привилегированная операция;
  • базовое представление о пакетном менеджере apt;
  • понимание, что такое системная служба (даже без опыта работы с systemd).

Опыт работы с Docker не требуется.

Материалы

  1. Требования к Linux
    Проверка CPU architecture, версии kernel, cgroup v1 против v2, требования к дисковому пространству и файловой системе. Что делать, если система не соответствует требованиям.

  2. Установка Docker Engine
    Удаление старых пакетов, подключение официального apt repository в формате deb822, установка docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin и docker-compose-plugin, проверка установки.

  3. Docker daemon
    Архитектура daemon–client, управление службой через systemctl, docker.service и docker.socket, конфигурация через /etc/docker/daemon.json, чтение логов daemon, каталог /var/lib/docker.

  4. Первый container
    Что происходит при docker run hello-world по шагам. Разбор вывода docker version, docker info, docker system df. Первое знакомство с docker ps и docker images.

  5. Docker socket и группа docker
    Что такое /var/run/docker.sock, почему членство в группе docker эквивалентно правам root, демонстрация эскалации привилегий и обсуждение того, когда этот риск приемлем.

  6. Rootless Docker
    Установка через dockerd-rootless-setuptool.sh, subuid/subgid, DOCKER_HOST, systemctl --user, loginctl enable-linger. Ограничения rootless mode. Полное удаление Docker и очистка данных.

  7. Практические задания
    Лабораторные задания раздела с проверкой результата.

Рекомендуемый порядок чтения

Строго последовательный: 01 → 02 → 03 → 04 → 05 → 06 → exercises.

Урок 06 можно отложить, если rootless mode вам сейчас не нужен, — но прочитайте хотя бы раздел про ограничения. К нему придётся вернуться в разделе 12. Security.

Практические задания

ЗаданиеТип
1Собрать отчёт о пригодности системы: architecture, kernel, cgroup version, свободное местообяз.
2Установить Docker Engine из официального репозитория и подтвердить версии всех четырёх компонентовобяз.
3Остановить и запустить daemon, объяснить поведение работающего container при перезапуске службыобяз.
4Прочитать docker info и найти в нём storage driver, cgroup driver, cgroup version и security optionsобяз.
5Показать, как доступ к Docker socket даёт чтение произвольного файла hostдоп.
6Настроить rootless Docker параллельно с системным и переключаться между ними через DOCKER_HOSTдоп.
7Настроить логирование daemon и найти в journalctl запись о запуске конкретного container

Полные формулировки, ожидаемый результат и команды проверки — в exercises.md.

Критерии завершения раздела

Раздел считается пройденным, когда учащийся может без подсказок:

  1. Выполнить docker run hello-world и объяснить каждый шаг вывода.
  2. Назвать версии Docker Engine, Docker CLI, containerd, Buildx и Compose в своей системе и способ их проверки.
  3. Показать статус docker.service, остановить и запустить его, найти его логи.
  4. Объяснить, что произойдёт с запущенными containers при systemctl restart docker.
  5. Определить, использует ли система cgroup v1 или v2, и сказать, почему это важно.
  6. Объяснить в двух предложениях, почему группа docker — это привилегия уровня root.
  7. Назвать минимум три ограничения rootless mode.

Проверьте себя: Quiz 01.

Что дальше

Раздел даёт инструмент, но не понимание. Следующий раздел отвечает на вопрос, который сейчас остаётся открытым: что вообще произошло, когда docker run «запустил container», и чем это отличается от запуска обычной программы.

Навигация

← Предыдущий раздел: Обзор курса
Вернуться к главному оглавлению
Следующий раздел: Основы Containerization →

Markdown на GitHub ↗