JavaRush /Курси /Модуль 2: Fullstack /Основні терміни Docker

Основні терміни Docker

Модуль 2: Fullstack
Рівень 11 , Лекція 5
Відкрита

6.1 Образи (Images)

Щоб ефективно працювати з Docker, треба зрозуміти кілька ключових термінів: образи, контейнери і реєстри. Давайте розберемо їх і зрозуміємо, для чого вони потрібні та як взаємодіють між собою.

Образ Docker — це шаблон, з якого створюються контейнери. Образ містить усі необхідні компоненти для виконання застосунку: операційну систему, застосунок, бібліотеки і залежності, а також конфігураційні файли. Проводячи аналогію з ООП: образ Docker — це клас, а контейнер — об'єкт класу. Образи створюються за допомогою Dockerfile — текстового файлу, який описує кроки для створення образу.

Основні характеристики образів:

  1. Шарова структура: образи складаються з декількох шарів. Є базовий шар, а кожен наступний представляє собою зміни відносно попереднього шару. Це дозволяє економити місце і зменшує час завантаження.
  2. Багаторазовість: один і той же образ можна використовувати для створення багатьох контейнерів.
  3. Переносимість: образи можна переносити між різними системами, що робить їх ідеальними для розробки, тестування і розгортання застосунків у різних середовищах.

Приклади використання образів:

Створення власного образу: ви можете створити свій власний образ, написавши Dockerfile, у якому треба вказати налаштування вашого застосунку і його залежностей.

dockerfile

FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/app.py"]

Використання готового образу: ви можете використовувати образи, доступні в Docker Hub, щоб швидко розгорнути стандартні застосунки, наприклад, веб-сервери чи бази даних.

Terminal

docker pull nginx 

Ця команда завантажує образ nginx з публічного сховища Docker Hub.

6.2 Контейнери (Containers)

Контейнер Docker — це запущений екземпляр образу. Контейнери ізолюють застосунки та їх залежності в окремому середовищі виконання, що дозволяє запускати їх незалежно від хостової системи та інших контейнерів. Контейнери легковагові, оскільки вони використовують ядро хостової операційної системи, а не створюють окреме ядро, як віртуальні машини.

Основні характеристики контейнерів:

  • Ізоляція: контейнери ізолюють застосунки, забезпечуючи їх незалежну роботу та запобігаючи конфліктам залежностей.
  • Легковаговість: контейнери споживають менше ресурсів у порівнянні з віртуальними машинами, оскільки не потребують окремої операційної системи.
  • Швидкий запуск: контейнери запускаються та зупиняються значно швидше віртуальних машин, що робить їх ідеальними для динамічних середовищ і масштабування.

Приклади використання контейнерів:

Запуск контейнера: ти можеш запустити контейнер з образу, використовуючи команду docker run.

Terminal

docker run -d -p 80:80 --name mynginx nginx

Управління контейнерами: Docker надає команди для управління контейнерами: start, stop, restart, rm і exec.

Terminal

docker stop mynginx
docker rm mynginx

Про всі команди та їх параметри ти дізнаєшся в наступних лекціях.

6.3 Реєстри (Registries)

Реєстр Docker — це сховище Docker-образів. Реєстри дозволяють розробникам і організаціям зберігати, керувати і поширювати образи контейнерів. Існують публічні та приватні реєстри.

Основні характеристики реєстрів:

  • Публічні реєстри: такі як Docker Hub, надають доступ до безлічі образів, створених спільнотою та офіційними розробниками.
  • Приватні реєстри: використовуються для зберігання та управління образами всередині організації, забезпечуючи контроль доступу та безпеку.
  • Інтеграція з CI/CD: реєстри легко інтегруються з системами безперервної інтеграції і розгортання, що дозволяє автоматизувати процес створення і розгортання образів.

Приклади використання реєстрів:

1. Docker Hub: публічний (та найпопулярніший) реєстр Docker-образів. Надає доступ до безлічі готових (і часто перевірених, що видно за статистикою завантаження) образів.

Terminal

docker pull nginx
docker push myusername/myimage:tag  

2. Приватний реєстр: ви можете налаштувати і використовувати власний реєстр за допомогою Docker Registry.

Terminal

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).

Важливо! Том — це віртуальний жорсткий диск, який можна підключити до віртуальної машини або контейнера. Зазвичай зберігається на гостьовій операційній системі у вигляді звичайного файлу.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ