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

Важно! Том — это виртуальный жесткий диск, который можно подключить к виртуальной машине или контейнеру. Обычно хранится на гостевой операционной системе в виде обычного файла.

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ