Windows контейнеры вручную
Серия о том, как устроены Windows-контейнеры изнутри — сверху вниз, по одному слою инструментов за раз. Начинаем с Windows Server, на котором нет ни Docker, ни Kubernetes: руками ставим containerd, сеть и nerdctl и разбираемся с изоляцией процессов, сетью, подключением папок и лимитами. Дальше даём контейнерам имена и адреса, заглядываем внутрь работающего контейнера, скачиваем образ и готовим его слои без containerd, а затем обходимся и без рантайма — создаём контейнер и его сеть прямыми вызовами HCS и HNS. В конце — изоляция Hyper-V, сборка образа без Docker и HostProcess-контейнеры.
Серия опирается на блок о Windows-узлах в серии Kubernetes для самых маленьких (части 36, 37, 38, 39, 40): там объяснены понятия, здесь — то, что под ними. Все примеры проверены на Windows Server 2025 и лежат в репозитории windows-containers-by-hand.
Ставим containerd без Docker и Kubernetes
На Windows Server 2025 без Docker и Kubernetes containerd ставится из архива с GitHub в
C:\Program Files\containerd, регистрируется службой командойcontainerd --register-serviceи сразу запускает контейнеры с изоляцией процессов. Сеть даёт CNI-плагин Microsoftnat: он сам создаёт сеть HNSnat, выдаёт контейнерам адреса из внутренней подсети и публикует порты политикой на конечной точке HNS. nerdctl добавляет команды Docker, умеет подключать к контейнеру не только папки, но и отдельные файлы хоста и передаёт лимиты--memoryи--cpusв спецификацию контейнера, а Windows соблюдает их через объект задания.
Серия не завершена: следующие части готовятся к публикации.
- Часть 2: Даём контейнерам имена и адреса
- Часть 3: Что внутри работающего Windows-контейнера?
- Часть 4: Скачиваем образ и готовим слои без containerd
- Часть 5: Запускаем контейнер без рантайма через HCS
- Часть 6: Изоляция Hyper-V: контейнер в своей виртуальной машине
- Часть 7: Собираем Windows-образ без Docker и загружаем его в реестр
- Часть 8: Запускаем HostProcess-контейнеры и разбираем их образ