distributed-computing/labs/lab_1
2023-09-20 10:03:04 +04:00
..
README.md Исправление опечатки в л/р 1 2023-09-20 10:03:04 +04:00

Лабораторная работа №1 - Знакомство с docker и docker-compose

Цель: изучение современных технологий контейнеризации.

Задачи:

  1. Установить средство контейнеризации docker.
  2. Изучить применение и принципы docker.
  3. Изучить утилиту docker-compose и структуру файла docker-compose.yml.
  4. Развернуть не менее 3х различных сервисов при помощи docker-compose.
  5. Оформить отчёт в формате Markdown и создать Pull Request в git-репозитории.

Установка docker

Для систем с графическим дисплеем рекомендуется устанавливать Docker Desktop, т.к. это средство позволяет максимально легко установить docker с графическим управлением в ОС.

Если же установка Docker Desktop для Вашей системы не применима, можно установить отдельно docker engine и, например, расширение Docker для Visual Studio Code.

Принципы docker

  1. Переменные окружения для запуска приложений.
  2. Монтирование директорий в linux и других подобный ОС.
  3. Отличие контейнера от виртуальной машины.
  4. Что такое образ (image) в docker, и в чём отличие от контейнера (container).
  5. Что такое Docker Hub.
  6. Что такое раздел/том (volume), и как это помогает обмениваться файлами между контейнерами или с хостом (host).
  7. Зачем нужно отображение портов из контейнера в хост.

Изучение docker-compose

В рамках этого пункта необходимо понять, что такое docker-compose и конфигурационный файл docker-compose.yml.

Также в этом разделе изучите формат записи YAML, т.к. это сильно поможет в будущем.

Разворачивание сервисов

Предлагается развернуть не менее 3х сервисов через docker-compose из списка ниже:

  1. mediawiki Движок вики.
  2. redmine Система учёта багов, т.е. баг-трекер.
  3. wordpress Популярная система управления контентом.
  4. drupal Ещё одна популярная система управления контентом.
  5. moodle Система для обучения, на которой построена https://lms.ulstu.ru.
  6. gitea Сервис для хранения репозиториев git, на котором работает этот репозиторий.

Можно вбить в поисковый движок фразу "%service_name% docker-compose", и вы удивитесь, что, скорее всего, найдёте ответ.

Требования и docker-compose:

  • Несколько контейнеров.
  • Хотя бы один volume.
  • Хотя бы один порт, проброшенный на хост.

При этом разворачивание системы должно пройти до конца. Например, должен быть создан администратор и система должна корректно функционировать. Это необходимо будет предоставить в отчёте, поэтому не забывайте делать скриншоты.

Оформление отчёта

Существует множество форматов для разметки текста. Например, HTML или TeX. Наряду с ними существует формат Markdown, который используется достаточно часто, особенно в репозиториях git, чтобы его изучить.

Необходимо написать отчёт с примерами содержимого docker-compose.yml и скриншотами по каждому выбранному сервису.

После содержимого docker-compose.yml в тексте отчёта необходимо написать, что за что там отвечает. Например, «определяется volume «db», который затем монтируется в директорию «/var/database» контейнера «database». Контейнер «database» запускается из образа «postgresql:latest» из Docker Hub» и т.д. Можно также оставлять комментарии прямиком в yml-файле через #.

Для оформления отчёта необходимо форкнуть (fork) к себе в профиль этот репозиторий.

После клонирования созданного репозитория к себе на рабочий ПК необходимо создать и переключиться на ветку в формате фамилия-инициалы-lab-номер, например, moiseev-vv-lab-1.

После этого отчёт и скриншоты необходимо положить в специальную папку в формате /tasks/фамилия-инициалы/lab_номер, например, /tasks/moiseev-vv/lab_1. Пример уже есть в этом репозитории.

После отправки вашей ветки в git-репозиторий (git push) необходимо оформить Pull Request из вашей ветки в main основного репозитория для того, что ваши изменения прошли ревью и были приняты.

Лабораторная работа считается выполненной, если ваш PR будет влит в основную ветвь основного репозитория.

Следите за вашим Pull Request! Преподаватель может оставлять комментарии-замечания, которые необходимо будет исправлять.