commit 5244660c01669cde75a7955c53d3d6121eb06f41 Author: Vladislav Moiseev Date: Mon Sep 18 22:11:02 2023 +0400 Initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..70bcf64 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# Распределенные вычисления и приложения + +В этом репозитории располагается курс лабораторных работ. +Также тут необходимо их сдавать. + +## Лабораторные работы + +1. [Знакомство с docker и docker-compose](labs/lab_1/README.md) +2. TBA +3. TBA +4. TBA +5. TBA +6. TBA +7. TBA +8. TBA diff --git a/labs/lab_1/README.md b/labs/lab_1/README.md new file mode 100644 index 0000000..873698c --- /dev/null +++ b/labs/lab_1/README.md @@ -0,0 +1,87 @@ +# Лабораторная работа №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** + Система для обучения, на которой построена . +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! Преподаватель может оставлять комментарии-замечания, которые необходимо будет исправлять. diff --git a/tasks/moiseev-vv/lab_1/README.md b/tasks/moiseev-vv/lab_1/README.md new file mode 100644 index 0000000..3831958 --- /dev/null +++ b/tasks/moiseev-vv/lab_1/README.md @@ -0,0 +1,31 @@ +# Отчёт по лабораторной работе №1 + +Выполнил: студент гр. ИСТбд-41 Моисеев Владислав. + +## Разворачивание сервера minecraft + +Содержимое файла `docker-compose.yml`: + +```yaml +services: # Описание служб (контейнеров). + minecraft: # Ну как же без майкг'афта. + image: itzg/minecraft-server # Образ контейнера из Docker Hub. Tag: latest. + ports: + - "25565:25565" # Прокидывается порт 25565 из контейнера в хост. + environment: # Ой, а это что? + EULA: "TRUE" + deploy: # А это? + resources: + limits: + memory: 1.5G + volumes: # Хммм.. Какие-то тома. Наверное, это описание библиотеки. Или нет? 😁 + - "~/minecraft_data:/data" +``` + +Разворачивается командой `docker-compose up`. + +Убеждаемся, что всё работает: + +![](ready-to-play.png) + +Удаляется всё командой `docker-compose down` или `docker-compose down -v`. diff --git a/tasks/moiseev-vv/lab_1/ready-to-play.png b/tasks/moiseev-vv/lab_1/ready-to-play.png new file mode 100644 index 0000000..bd64e66 Binary files /dev/null and b/tasks/moiseev-vv/lab_1/ready-to-play.png differ