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

Контейнер упаковывает приложение с зависимостями в образ (image) и запускает изолированный процесс на общем ядре хоста. Стандарт OCI объединяет Docker, Podman, containerd и Kubernetes. Ниже — движки, сборка, оркестрация и сканирование уязвимостей.

С чего начать

1. Установите Docker или Podman локально.

2. Соберите образ из `Dockerfile`, запустите `docker run -p 8080:80 …`.

3. Для кластера — minikube или kind, затем `kubectl get pods`.


Движки контейнеров

Движок Особенность Установка
Docker Engine Де-факто стандарт, Compose plugin docs.docker.com/engine/install
Podman Без демона, rootless apt install podman
containerd Рантайм для k8s бинарник с GitHub
CRI-O CRI для OpenShift/RHEL dnf install cri-o

Docker на Ubuntu (фрагмент):

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo usermod -aG docker $USER

Сборка образов

Инструмент Назначение
Docker Buildx Multi-platform, BuildKit
Buildah OCI-образы без демона
Kaniko Сборка внутри Kubernetes
ko Образы Go без Dockerfile
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:1.0 .

Оркестрация

Платформа Масштаб
Docker Compose Один хост, несколько сервисов
Kubernetes Кластер, self-healing, Service/Ingress
Nomad Проще k8s, не только контейнеры
minikube / kind Локальный кластер для обучения
minikube start
kubectl create deployment web --image=nginx
kubectl expose deployment web --port=80 --type=NodePort

Реестры образов

Реестр Тип
Docker Hub Публичный по умолчанию
Harbor Приватный, сканирование, RBAC
registry:2 Минимальный self-hosted

Безопасность

Сканер Команда / идея
Trivy trivy image nginx:latest
Grype + Syft SBOM → поиск CVE
dive Анализ слоёв образа
brew install aquasecurity/trivy/trivy
trivy image myapp:latest

Отладка

CLI Для чего
crictl CRI (containerd, CRI-O)
docker logs, docker exec Логи и shell в контейнере
nsenter Вход в namespaces

CI/CD

  • GitHub Actions, GitLab CIdocker build / kaniko в pipeline.
  • Tekton, Skaffold — Kubernetes-native доставка.

См. также