Лабораторная работа №2: Ручная установка и основы Docker
Цель работы
Section titled “Цель работы”Научиться устанавливать Docker Engine и управлять жизненным циклом контейнеров (запускать, останавливать, просматривать логи, удалять) с помощью командной строки.
Основные теоретические положения
Section titled “Основные теоретические положения”1. Образ (Image) и Контейнер (Container)
Section titled “1. Образ (Image) и Контейнер (Container)”Это фундаментальные концепции Docker.
- Образ: Пакет “только для чтения”, который содержит все необходимое для запуска приложения: код, среду выполнения, библиотеки, переменные окружения и файлы конфигурации. Образы строятся послойно.
- Контейнер: Запущенный, исполняемый экземпляр образа. Контейнер изолирован от хост-системы и других контейнеров. В один момент времени из одного образа можно запустить множество контейнеров.
- Рекомендуемая литература: Docker overview (Документация Docker)
2. Docker Hub
Section titled “2. Docker Hub”Публичный репозиторий Docker-образов, похожий на GitHub для кода. Содержит тысячи готовых образов для популярных программ (базы данных, веб-серверы, языки программирования).
- Сайт: https://hub.docker.com/
3. Жизненный цикл контейнера
Section titled “3. Жизненный цикл контейнера”Основные команды для управления контейнерами:
docker run: Создает и запускает контейнер из образа.docker ps: Показывает список запущенных контейнеров. Флаг-aпоказывает все контейнеры, включая остановленные.docker stop: Корректно останавливает запущенный контейнер.docker start: Запускает остановленный контейнер.docker logs: Показывает логи (стандартный вывод) контейнера. Критически важная команда для отладки.docker rm: Удаляет остановленный контейнер.- Рекомендуемая литература: docker run (Справочник CLI)
Задания для выполнения
Section titled “Задания для выполнения”-
Ручная установка Docker (30 мин):
- Подключитесь по SSH к
Web-nodeиDb-node. - Следуя официальной документации, установите Docker Engine. Для Ubuntu шаги обычно такие:
Terminal window # 1. Установка зависимостейsudo apt-get updatesudo apt-get install ca-certificates curl gnupg# 2. Добавление GPG-ключа Dockersudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpg# 3. Добавление репозиторияecho "deb [arch=$(dpkg --print-architecture ) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME" ) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get update# 4. Установка Docker Enginesudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - Добавьте своего пользователя в группу
docker, чтобы выполнять команды безsudo. Важно: после этого нужно перелогиниться в SSH-сессию.Terminal window sudo usermod -aG docker $USER - Рекомендуемая литература: Install Docker Engine on Ubuntu (Документация Docker)
- Подключитесь по SSH к
-
Работа с образами:
- На
Web-nodeнайдите официальный образ для блога Ghost:docker search ghost. - Скачайте последнюю версию образа:
docker pull ghost:latest. - На
Db-nodeскачайте образmysqlверсии 8.0:docker pull mysql:8.0. - Просмотрите список всех скачанных локально образов на каждой машине:
docker images.
- На
-
Запуск контейнеров:
- На
Db-nodeзапустите контейнерmysql. Это stateful-приложение, которому для первого запуска нужен пароль root.Terminal window docker run -d --name db-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword mysql:8.0-d(detach): запустить в фоновом режиме.--name db-mysql: дать контейнеру человекочитаемое имя.-e: передать переменную окружения.
- На
Web-nodeзапустите контейнерghost. Ему нужно “пробросить” порт, чтобы мы могли зайти на сайт из браузера.Terminal window docker run -d --name blog -p 8080:2368 ghost:latest-p 8080:2368: связать порт 8080 хост-машины с портом 2368 внутри контейнера.
- Проверьте, что оба контейнера запущены (
docker ps). - Посмотрите логи контейнера
db-mysql(docker logs db-mysql), чтобы убедиться, что он успешно запустился. - Откройте в браузере на своем компьютере
http://<IP-адрес Web-node>:8080и убедитесь, что открылась страница приветствия Ghost. - Остановите и удалите оба контейнера:
docker stop blog,docker rm blog(и аналогично дляdb-mysql).
- На
Контрольные вопросы
Section titled “Контрольные вопросы”- В чем разница между
docker pullиdocker run? - Для чего используется флаг
-pв командеdocker run? - Как посмотреть логи запущенного контейнера и почему это важно для администратора?
- Что произойдет, если запустить команду
docker runдля образа, которого нет локально?