Презентация

Docker и деплой: как упаковать приложение и не сломать окружение

Здесь последовательно собран путь от виртуализации к контейнерам, образам, Dockerfile, compose и базовым идеям деплоя.

О чем этот материал

Контейнеры, образы, Dockerfile, compose, YAML и базовая логика выкладки.

Это адаптированная версия учебной презентации: слайды разобраны в формате обычной статьи, чтобы материал было легче читать с телефона и возвращаться к нужным блокам позже.

Что внутри

Ниже краткий план материала. По нему удобно понять, в каком порядке разбирать тему.

  1. Виртуализация
  2. До было до
  3. Docker
  4. Образ
  5. Dockerfile
  6. Docker-compose
  7. YAML
  8. Deploy
  9. K8S

Виртуализация

Серверов:

Позволяет запускать несколько операционных систем на одном физическом сервере как виртуальные машины (ВМ). Каждая ВМ работает независимо и

изолировано от других.

Сетей:

Гипервизор

Иллюстрация к теме Гипервизор
Иллюстрация из учебного материала.

Создаёт и управляет виртуальными машинами. Он позволяет одному физическому серверу запускать несколько изолированных виртуальных сред,

каждая из которых может иметь свою операционную систему и приложения

аппаратное обеспечение (VMware EXSi)

(VirtualBox)

  • Тип 1 “bare metal” - ставится непосредственно на
  • Тип 2 “hosted” - ставится в рамках ОС

Контейнеризация это технология, которая позволяет упаковать приложение вместе с его окружением и зависимостями в контейнер,

обеспечивая таким образом его портативность и консистентность работы в любой среде. Это решает проблему "у меня работает, а у тебя нет", так как приложение будет работать одинаково везде, где есть поддержка контейнера,

будь то разработчик, тестирование, стейджинг или продакшн.

Контейнеризация

Docker платформа для разработки, доставки и запуска приложений в контейнерах

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

основой для создания контейнеров.

— это запущенная инстанция образа, которая включает в себя приложение и его зависимости.

Контейнеры изолированы друг от друга и от хостовой системы, но могут общаться через предварительно определенные каналы.

  • Образ (Image)
  • Контейнер (Container)
  • Dockerfile
  • Слои (Layers)
  • Docker Hub и Реестр (Registry)
  • Docker Compose
  • Docker Swarm
  • Тома (Volumes)
  • Сети (Networks)
В этом блоке важно уловить общую роль инструмента в цепочке поставки, а не пытаться сразу запомнить все детали синтаксиса.

Dockerfile последовательность инструкций и команд для сборки образа Docker.

FROM - начало сборки от базового образа. Первая инструкция в любом Докерфайле

RUN - выполнение команд внутри образа на этапе сборки

COPY [откуда] [куда]

EXPOSE - указание порта, который будет слушаться Докером

В этом блоке важно уловить общую роль инструмента в цепочке поставки, а не пытаться сразу запомнить все детали синтаксиса.

Docker

Типичный алгоритм работы

  • Создать Dockerfile
  • Создать образ - в директории с файлом
  • Запустить контейнер из образа
В этом блоке важно уловить общую роль инструмента в цепочке поставки, а не пытаться сразу запомнить все детали синтаксиса.

Docker-compose

Когда много контейнеров

YAML для конфигурирования файл docker-compose.yml

Определяем контейнеры (services)

Указываем сети (даем названия)

В этом блоке важно уловить общую роль инструмента в цепочке поставки, а не пытаться сразу запомнить все детали синтаксиса.

Пауза

Зарегайтесь пожалуйста https://practicum.yandex.ru/webinar-form/go-developer/

YAML

Yet Another Markup Language

YAML Ain't Markup Language

Формат разметки/сериализации данных (следите за отступами)

Deploy

Доставка приложения туда, где оно будет работать

Доставка приложения туда, где оно будет работать

Оркестрация

Когда контейнеров ну очень много!

Kubernetes (k8s)

Когда контейнеров ну очень много!

В этом блоке важно уловить общую роль инструмента в цепочке поставки, а не пытаться сразу запомнить все детали синтаксиса.