36 lines
3.4 KiB
Markdown
36 lines
3.4 KiB
Markdown
## Что такое Docker
|
||
|
||
Docker - это платформа для упаковки приложения вместе со всеми зависимостями в **изолированную среду** (контейнер), которая запускается одинаково на любом устройстве.
|
||
|
||
Коротко по терминам:
|
||
|
||
1. **Образ (image)** - неизменяемый «снимок» файловой системы и метаданных запуска (команда по умолчанию, переменные окружения, порты). Образ строится из слоёв; его можно скачать из реестра (например, Docker Hub) или собрать сами из `Dockerfile`.
|
||
2. **Контейнер** - запущенный экземпляр образа. У контейнера есть ID, имя, сеть, опционально тома с данными. Один образ может породить много контейнеров.
|
||
3. **Docker Engine** - демон и CLI (`docker`), которые создают и управляют контейнерами на хосте.
|
||
4. **Docker Compose** - инструмент (плагин к CLI: `docker compose`) для описания **нескольких** сервисов в одном YAML-файле: сборка образов, порты, тома, сети, зависимости запуска, переменные окружения.
|
||
|
||
<img src="./assets/image_1777876655709.png" width="auto">
|
||
|
||
## Зачем это нужно
|
||
|
||
1. **Стабильность** - «у меня не работает» больше не актуально, докер образ можно запускать на любом устройстве, где установлен докер.
|
||
2. **Изоляция** - приложения не мешают друг другу версиями библиотек и не требуют полноценной виртуальной машины на каждый сервис.
|
||
3. **Масштаб** - образы легко переносить, дальше их поднимают Kubernetes, Nomad и т.д., но база всё равно Docker-образ.
|
||
4. **Compose для стека** - фронт, бэкенд, БД и кэш поднимаются одной командой и общаются по внутренней сети.
|
||
|
||
## Docker и виртуальная машина
|
||
|
||
Виртуальная машина эмулирует железо и поднимает полную ОС. Контейнер делится ядром хоста и изолируется, он легче и быстрее стартует, но это не замена полной изоляции уровня ВМ для всех сценариев безопасности.
|
||
|
||
## Когда достаточно `docker run`, а когда Compose
|
||
|
||
- **`docker run`** - один контейнер, эксперимент, отладка, скрипты.
|
||
- `docker compose` - несколько связанных сервисов, общая сеть, тома, единая точка входа для разработки и демо.
|
||
|
||
<img src="./assets/image_1777876699941.png" width=" 500">
|
||
|
||
## Документация
|
||
|
||
- [Официальная документация Docker](https://docs.docker.com/)
|
||
- [Compose](https://docs.docker.com/compose/compose-file/)
|