Раздел 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 не требуется.
Материалы
-
Требования к Linux
Проверка CPU architecture, версии kernel, cgroup v1 против v2, требования к дисковому пространству и файловой системе. Что делать, если система не соответствует требованиям. -
Установка Docker Engine
Удаление старых пакетов, подключение официального apt repository в формате deb822, установкаdocker-ce,docker-ce-cli,containerd.io,docker-buildx-pluginиdocker-compose-plugin, проверка установки. -
Docker daemon
Архитектура daemon–client, управление службой черезsystemctl,docker.serviceиdocker.socket, конфигурация через/etc/docker/daemon.json, чтение логов daemon, каталог/var/lib/docker. -
Первый container
Что происходит приdocker run hello-worldпо шагам. Разбор выводаdocker version,docker info,docker system df. Первое знакомство сdocker psиdocker images. -
Docker socket и группа
docker
Что такое/var/run/docker.sock, почему членство в группеdockerэквивалентно правамroot, демонстрация эскалации привилегий и обсуждение того, когда этот риск приемлем. -
Rootless Docker
Установка черезdockerd-rootless-setuptool.sh,subuid/subgid,DOCKER_HOST,systemctl --user,loginctl enable-linger. Ограничения rootless mode. Полное удаление Docker и очистка данных. -
Практические задания
Лабораторные задания раздела с проверкой результата.
Рекомендуемый порядок чтения
Строго последовательный: 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.
Критерии завершения раздела
Раздел считается пройденным, когда учащийся может без подсказок:
- Выполнить
docker run hello-worldи объяснить каждый шаг вывода. - Назвать версии Docker Engine, Docker CLI, containerd, Buildx и Compose в своей системе и способ их проверки.
- Показать статус
docker.service, остановить и запустить его, найти его логи. - Объяснить, что произойдёт с запущенными containers при
systemctl restart docker. - Определить, использует ли система cgroup v1 или v2, и сказать, почему это важно.
- Объяснить в двух предложениях, почему группа
docker— это привилегия уровняroot. - Назвать минимум три ограничения rootless mode.
Проверьте себя: Quiz 01.
Что дальше
Раздел даёт инструмент, но не понимание. Следующий раздел отвечает на вопрос, который сейчас остаётся открытым: что вообще произошло, когда docker run «запустил container», и чем это отличается от запуска обычной программы.
Навигация
← Предыдущий раздел: Обзор курса
Вернуться к главному оглавлению
Следующий раздел: Основы Containerization →