Лабораторна робота 7
Тема: Docker та контейнеризація
Мета: Отримати практичні навички створення багатоконтейнерних додатків, налаштування мереж контейнерів, роботи з Docker Compose та деплойменту сервісів у контейнерах.
Завдання роботи (практичні)
- Встановлення та базове налаштування Docker.
- Встановити Docker:
sudo apt update && sudo apt install docker.io -y - Перевірити встановлення:
docker --version - Додати користувача до групи docker:
sudo usermod -aG docker $USER - Перезавантажити сесію (logout/login).
- Встановити Docker:
- Багатоконтейнерний додаток (веб + база даних).
- Створити директорію проекту:
mkdir ~/multiapp && cd ~/multiapp - Створити файл
docker-compose.yml:version: "3.8" services: web: image: nginx ports: - "8080:80" db: image: postgres environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: mydb - Запустити додаток:
docker compose up -d - Перевірити запущені сервіси:
docker compose ps - Відкрити веб-сервер:
http://localhost:8080 - Перевірити базу даних (через контейнер):
docker exec -it multiapp-db-1 psql -U user mydb
- Створити директорію проекту:
- Мережі контейнерів та взаємодія сервісів.
- Створити власну мережу:
docker network create appnet - Запустити контейнер у мережі:
docker run -d --network=appnet --name=service1 ubuntu sleep infinity - Другий контейнер у тій же мережі:
docker run -d --network=appnet --name=service2 ubuntu sleep infinity - Перевірити зв’язок між контейнерами:
docker exec service1 ping service2 -c 4
- Створити власну мережу:
- Створення власного Docker-образу.
- Створити директорію:
mkdir ~/customimage && cd ~/customimage - Створити Dockerfile:
FROM ubuntu RUN apt update && apt install -y python3 WORKDIR /app COPY app.py . CMD ["python3", "app.py"] - Створити файл app.py:
echo 'print("Hello from container")' > app.py - Зібрати образ:
docker build -t myapp . - Запустити контейнер:
docker run myapp
- Створити директорію:
- Розгортання сервісу з реальним застосунком.
- Використати приклад простого API (Python Flask).
mkdir ~/flaskapp && cd ~/flaskapp - Створити файл app.py:
from flask import Flask app = Flask(__name__) @app.route('/') def home(): return "Hello from Flask in Docker!" if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) - Створити Dockerfile:
FROM python:3.10 WORKDIR /app COPY . . RUN pip install flask CMD ["python", "app.py"] - Зібрати образ:
docker build -t flaskapp . - Запустити контейнер:
docker run -d -p 5000:5000 flaskapp - Перевірити роботу:
http://localhost:5000
- Використати приклад простого API (Python Flask).
- Моніторинг та управління контейнерами.
- Переглянути ресурси контейнерів:
docker stats - Переглянути логи контейнера:
docker logs - Оновити образ і перезапустити сервіс.
- Переглянути ресурси контейнерів:
Необхідне програмне забезпечення
- Linux (Ubuntu або інший дистрибутив).
- Термінал.
- Docker та Docker Compose.
Короткий опис виконання роботи
У ході лабораторної роботи студент виконує практичні завдання з контейнеризації: створює багатоконтейнерні додатки, налаштовує мережі, працює з Docker Compose та розгортає реальні сервіси у контейнерах. Теоретичні питання не включені — акцент робиться на практичних навичках.
Результат виконання роботи
Студент отримує практичний досвід роботи з контейнерами, створення Docker-образів, багатоконтейнерних додатків та розгортання сервісів. Це дозволяє розуміти сучасні підходи до деплойменту програмного забезпечення.
Критерії оцінювання
Максимальна кількість балів — 5 балів
| N | Кількість балів | Критерій |
|---|---|---|
| 1 | 0 | Лабораторну роботу не виконано |
| 2 | 2 | Виконано частину завдань, додаток працює частково |
| 3 | 3 | Основні завдання виконані, але є помилки в налаштуванні |
| 4 | 4 | Усі завдання виконані коректно, додаток працює |
| 5 | 5 | Завдання виконані, студент розуміє процес контейнеризації на практиці |
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу