Архитектура и компоненты Docker
1. Демон Docker Daemon (`dockerd`):
- 𝗥𝗼𝗹𝗲: Управляет контейнерами Docker в системе.
- 𝗥𝗲𝘀𝗽𝗼𝗻𝘀𝗶𝗯𝗶𝗹𝗶𝘁𝗶𝗲𝘀: Создание, запуск и управление контейнерами.
2. Клиент Docker (`docker`):
- 𝗥𝗼𝗹𝗲: Интерфейс, через который пользователи взаимодействуют с Docker.
- 𝗖𝗼𝗺𝗺𝗮𝗻𝗱𝘀: build, pull, run и т.д.
3. Образы Docker:
- 𝗗𝗲𝗳𝗶𝗻𝗶𝘁𝗶𝗼𝗻: Шаблоны, доступные только для чтения, используемые для создания контейнеров.
- 𝗥𝗼𝗹𝗲: Служат основой для создания контейнеров.
- 𝗥𝗲𝗴𝗶𝘀𝘁𝗿𝘆/𝗛𝘂𝗯: Система хранения и распространения образов Docker.
4. Контейнеры Docker:
- 𝗗𝗲𝗳𝗶𝗻𝗶𝘁𝗶𝗼𝗻: Запускаемые экземпляры образов Docker.
- 𝗥𝗼𝗹𝗲: Инкапсуляция приложения и его окружения.
5. Реестр Docker:
- 𝗥𝗼𝗹𝗲: Хранить образы Docker.
- 𝗣𝘂𝗯𝗹𝗶𝗰 𝗥𝗲𝗴𝗶𝘀𝘁𝗿𝘆: Docker Hub.
- 𝗣𝗿𝗶𝘃𝗮𝘁𝗲 𝗥𝗲𝗴𝗶𝘀𝘁𝗿𝘆: Может быть размещен пользователями.
Рабочий процесс Docker
A. Фаза разработки
1. 𝗪𝗿𝗶𝘁𝗲 𝗖𝗼𝗱𝗲:
- Разработчики пишут код локально.
2. 𝗕𝘂𝗶𝗹𝗱 𝗗𝗼𝗰𝗸𝗲𝗿 𝗜𝗺𝗮𝗴𝗲:
- 𝗗𝗼𝗰𝗸𝗲𝗿𝗳𝗶𝗹𝗲: Скрипт с инструкциями по созданию образа Docker.
- 𝗖𝗼𝗺𝗺𝗮𝗻𝗱: `docker build -t my-image .`
3. 𝗧𝗲𝘀𝘁 𝗟𝗼𝗰𝗮𝗹𝗹𝘆:
- Запустите приложение внутри контейнера Docker локально.
- 𝗖𝗼𝗺𝗺𝗮𝗻𝗱: `docker run my-image`.
B. Фаза обмена/развертывания
4. 𝗣𝘂𝘀𝗵 𝗜𝗺𝗮𝗴𝗲 𝘁𝗼 𝗥𝗲𝗴𝗶𝘀𝘁𝗿𝘆:
- Разместить образ Docker в реестре (Docker Hub, AWS ECR и т.д.).
- 𝗖𝗼𝗺𝗺𝗮𝗻𝗱: `docker push my-image`.
5. 𝗗𝗲𝗽𝗹𝗼𝘆 𝗼𝗻 𝗮 𝗦𝗲𝗿𝘃𝗲𝗿/𝗖𝗹𝘂𝘀𝘁𝗲𝗿:
- Извлечение образа Docker из реестра.
- 𝗖𝗼𝗺𝗺𝗮𝗻𝗱: `docker pull my-image`.
- Запустите контейнер на сервере или кластере (например, Kubernetes).
- 𝗖𝗼𝗺𝗺𝗮𝗻𝗱: `docker run my-image`.
C. Интеграция CI/CD
6. 𝗖𝗼𝗻𝘁𝗶𝗻𝘂𝗼𝘂𝘀 𝗜𝗻𝘁𝗲𝗴𝗿𝗮𝘁𝗶𝗼𝗻 (𝗖𝗜):
- Интеграция изменений кода и сборка образа Docker.
- Поместите собранный образ в реестр.
7. 𝗖𝗼𝗻𝘁𝗶𝗻𝘂𝗼𝘂𝘀 𝗗𝗲𝗽𝗹𝗼𝘆𝗺𝗲𝗻𝘁 (𝗖𝗗):
- Развертывание образа Docker из реестра в производственные среды.
D. Масштабирование и управление
8. 𝗦𝗰𝗮𝗹𝗶𝗻𝗴:
- Увеличение или уменьшение количества работающих контейнеров в зависимости от потребности.
9. 𝗠𝗼𝗻𝗶𝘁𝗼𝗿𝗶𝗻𝗴 & 𝗟𝗼𝗴𝗴𝗶𝗻𝗴:
- Отслеживание производительности и журналов запущенных контейнеров.
10. 𝗨𝗽𝗱𝗮𝘁𝗲 & 𝗥𝗼𝗹𝗹𝗯𝗮𝗰𝗸:
- Развертывание обновлений путем размещения новых образов Docker в реестре и обновления запущенных контейнеров.
- При необходимости откатитесь к предыдущей версии, запустив контейнеры из более старого образа Docker.
E. Сеть и хранение данных
11. 𝗡𝗲𝘁𝘄𝗼𝗿𝗸𝗶𝗻𝗴:
- Управление связью между контейнерами и внешним миром.
12. 𝗦𝘁𝗼𝗿𝗮𝗴𝗲:
- Управление данными и сохранение состояния с помощью томов.
#devops #девопс
Подпишись 👉@i_DevOps