Files
docker/docs/1. Что такое Docker.md
T
2026-05-04 11:09:04 +03:00

36 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Что такое 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=" 400">
## Документация
- [Официальная документация Docker](https://docs.docker.com/)
- [Compose](https://docs.docker.com/compose/compose-file/)