DAS_2023_1/labs/lab_1.md

87 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №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! Преподаватель может оставлять комментарии-замечания, которые необходимо будет исправлять.