Docker
Docker — платформа контейнеризации. Запускает процесс в изолированном Linux-namespace (PID, net, mount, uts, ipc, user) с cgroups для лимитов. По сути — обёртка над Linux-примитивами + удобный CLI + registry.
Что это на самом деле
Docker container = процесс Linux
+ namespaces (изоляция)
+ cgroups (лимиты CPU/mem/io)
+ overlay FS (слои)
+ сеть (veth pair, iptables)
Компоненты
- dockerd — daemon (root, слушает /var/run/docker.sock)
- containerd — низкоуровневый рантайм
- runc — запуск контейнера (OCI runtime)
- docker CLI — клиент
- BuildKit — сборка образов
Dockerfile
FROM alpine:3.19
RUN apk add --no-cache curl
COPY app /usr/local/bin/app
USER 1000
ENTRYPOINT ["/usr/local/bin/app"]
EXPOSE 8080
Namespaces
| NS | Изолирует |
|---|---|
| pid | PID (внутри свой PID 1) |
| net | сетевые интерфейсы |
| mnt | mount points |
| uts | hostname |
| ipc | System V IPC |
| user | UID/GID mapping |
| cgroup | cgroup root |
Сети
- bridge (default) — veth pair, docker0
- host — общий namespace с хостом
- none — только loopback
- overlay — для Swarm, cross-host
- macvlan — свой MAC на реальный интерфейс
Volumes
- bind mount —
-v /host/path:/container/path - named volume —
-v mydata:/data - tmpfs —
--tmpfs /tmp
Docker vs Podman vs containerd
| Docker | Podman | containerd+nerdctl | |
|---|---|---|---|
| Daemon | да (root) | нет | да |
| Rootless | частично | из коробки | да |
| K8s | уходит | ок | де-факто |
Docker Desktop / лицензия
С 2022 Docker Desktop — платный для компаний > 250 сотрудников или > $10M выручки. Альтернативы: Rancher Desktop, OrbStack, Podman Desktop, colima.