6.1 Образи (Images)
Щоб ефективно працювати з Docker, треба зрозуміти кілька ключових термінів: образи, контейнери і реєстри. Давайте розберемо їх і зрозуміємо, для чого вони потрібні та як взаємодіють між собою.
Образ Docker — це шаблон, з якого створюються контейнери. Образ містить усі необхідні компоненти для виконання застосунку: операційну систему, застосунок, бібліотеки і залежності, а також конфігураційні файли. Проводячи аналогію з ООП: образ Docker — це клас, а контейнер — об'єкт класу. Образи створюються за допомогою Dockerfile — текстового файлу, який описує кроки для створення образу.
Основні характеристики образів:
- Шарова структура: образи складаються з декількох шарів. Є базовий шар, а кожен наступний представляє собою зміни відносно попереднього шару. Це дозволяє економити місце і зменшує час завантаження.
- Багаторазовість: один і той же образ можна використовувати для створення багатьох контейнерів.
- Переносимість: образи можна переносити між різними системами, що робить їх ідеальними для розробки, тестування і розгортання застосунків у різних середовищах.
Приклади використання образів:
Створення власного образу: ви можете створити свій власний образ, написавши Dockerfile, у якому треба вказати налаштування вашого застосунку і його залежностей.
FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/app.py"]
Використання готового образу: ви можете використовувати образи, доступні в Docker Hub, щоб швидко розгорнути стандартні застосунки, наприклад, веб-сервери чи бази даних.
docker pull nginx
Ця команда завантажує образ nginx з публічного сховища Docker Hub.
6.2 Контейнери (Containers)
Контейнер Docker — це запущений екземпляр образу. Контейнери ізолюють застосунки та їх залежності в окремому середовищі виконання, що дозволяє запускати їх незалежно від хостової системи та інших контейнерів. Контейнери легковагові, оскільки вони використовують ядро хостової операційної системи, а не створюють окреме ядро, як віртуальні машини.
Основні характеристики контейнерів:
- Ізоляція: контейнери ізолюють застосунки, забезпечуючи їх незалежну роботу та запобігаючи конфліктам залежностей.
- Легковаговість: контейнери споживають менше ресурсів у порівнянні з віртуальними машинами, оскільки не потребують окремої операційної системи.
- Швидкий запуск: контейнери запускаються та зупиняються значно швидше віртуальних машин, що робить їх ідеальними для динамічних середовищ і масштабування.
Приклади використання контейнерів:
Запуск контейнера: ти можеш запустити контейнер з образу, використовуючи команду docker run.
docker run -d -p 80:80 --name mynginx nginx
Управління контейнерами: Docker надає команди для управління контейнерами: start, stop, restart, rm і exec.
docker stop mynginx
docker rm mynginx
Про всі команди та їх параметри ти дізнаєшся в наступних лекціях.
6.3 Реєстри (Registries)
Реєстр Docker — це сховище Docker-образів. Реєстри дозволяють розробникам і організаціям зберігати, керувати і поширювати образи контейнерів. Існують публічні та приватні реєстри.
Основні характеристики реєстрів:
- Публічні реєстри: такі як Docker Hub, надають доступ до безлічі образів, створених спільнотою та офіційними розробниками.
- Приватні реєстри: використовуються для зберігання та управління образами всередині організації, забезпечуючи контроль доступу та безпеку.
- Інтеграція з CI/CD: реєстри легко інтегруються з системами безперервної інтеграції і розгортання, що дозволяє автоматизувати процес створення і розгортання образів.
Приклади використання реєстрів:
1. Docker Hub: публічний (та найпопулярніший) реєстр Docker-образів. Надає доступ до безлічі готових (і часто перевірених, що видно за статистикою завантаження) образів.
docker pull nginx
docker push myusername/myimage:tag
2. Приватний реєстр: ви можете налаштувати і використовувати власний реєстр за допомогою Docker Registry.
docker run -d -p 5000:5000 --name registry registry:2
docker tag myimage localhost:5000/myimage
docker push localhost:5000/myimage
Взаємодія образів, контейнерів і реєстрів
Ці три компоненти тісно пов'язані між собою і формують основу роботи з Docker:
- Створення образу: розробник створює образ за допомогою Dockerfile і зберігає його локально.
- Завантаження образу в реєстр: образ завантажується в реєстр (наприклад, Docker Hub або приватний реєстр), де він зберігається і стає доступним для інших користувачів або систем.
- Запуск контейнера: користувач завантажує образ з реєстру та запускає контейнер, який ізолює застосунок і забезпечує його виконання.
6.4 Оркестрація (Orchestration)
Оркестрація — це процес управління багатьма контейнерами у розподіленому середовищі. Інструменти оркестрації допомагають автоматизувати розгортання, масштабування та управління контейнерами.
- Kubernetes: найпопулярніша платформа оркестрації контейнерів, що дозволяє управляти кластером контейнерів на різних вузлах.
- Docker Swarm: вбудована у Docker платформа оркестрації для створення та управління кластерами Docker.
- Функції оркестрації: автоматичне масштабування, самовідновлення, управління мережами та балансування навантаження.
6.5 Мережі (Networks)
Мережі в Docker дозволяють контейнерам взаємодіяти один з одним і з зовнішнім світом. Docker надає кілька типів мереж для різних сценаріїв використання.
- Bridge: мережа за замовчуванням, створювана Docker. Контейнери в мостовій мережі можуть взаємодіяти один з одним.
- Host: контейнер використовує мережеві інтерфейси хостової машини, отримуючи прямий доступ до них.
- Overlay: використовується для створення мереж між кількома Docker-демонами. Необхідна для оркестрації.
- None: відключає всі мережеві інтерфейси контейнера. Корисно для ізольованих задач.
6.6 Томи (Volumes)
Томи (Volumes) — це механізм для постійного зберігання даних контейнерів. Вони дозволяють зберігати дані поза контейнером, щоб інформація не губилася при перезапуску або видаленні контейнера.
- Створення тому: томи створюються командою
docker volume create. - Монтування тому: томи підключаються до контейнерів прапором
-vпри запуску. - Переваги: томи забезпечують зручне збереження і обмін даними між контейнерами, а також кращу продуктивність у порівнянні з прив'язаними директоріями (bind mounts).
Важливо! Том — це віртуальний жорсткий диск, який можна підключити до віртуальної машини або контейнера. Зазвичай зберігається на гостьовій операційній системі у вигляді звичайного файлу.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ