Nerdctl: CLI-инструмент, совместимый с Docker, для containerd

Nerdctl: CLI-инструмент, совместимый с Docker, для containerd


nerdctl - это мощная утилита командной строки, созданная для работы с containerd.

Она предлагае привычный Docker-подобный интерфейс с полной поддержкой таких функций, как Compose, rootless-режим, шифрование образов и не только.

Зачем нужен nerdctl

  • Docker-интерфейс с движком containerd

Вы получаете привычные команды вроде docker build, run, compose, push и pull, но при этом работаете напрямую с containerd, а не с Docker Engine.

  • Мост между Docker и Kubernetes

Поскольку Kubernetes постепенно отказывается от Docker Engine (dockershim), nerdctl закрывает этот пробел - с его помощью можно строить и управлять Docker-образами в окружениях на основе containerd.

  • Современные и экспериментальные фичи

В nerdctl встроена поддержка новинок вроде ленивой загрузки (eStargz, OverlayBD), шифрования образов (ociCrypt), а также p2p-доставки через IPFS.

Основные возможности

CLI в стиле Docker и поддержка Compose

Работайте с привычными Docker-командами, включая nerdctl compose up для запуска мультиконтейнерных стеков.

Rootless-режим и UserNS-Remap

  • Rootless-режим - запустите контейнеры без прав суперпользователя, используя вспомогательные скрипты вроде containerd-rootless-setuptool.sh.
  • UserNS-Remap (с версии nerdctl 2.1) - containerd запускается с правами root, но сами контейнеры работают под переназначенными UID, что повышает безопасность без потерь в производительности.

Ленивая загрузка и p2p-дистрибуция образов

  • Ленивая загрузка - контейнеры стартуют быстрее, потому что нужные слои образа подгружаются по мере надобности через snapshotter’ы вроде eStargz или Nydus.
  • Интеграция с IPFS - отправляйте и загружайте образы через IPFS: nerdctl push ipfs://... для децентрализованной доставки.

Шифрование и подпись образов

Шифруйте слои образов через OCIcrypt: nerdctl image encrypt, а затем запускайте зашифрованные образы напрямую. Также поддерживается подписание через cosign.

Продвинутый билдинг

Благодаря BuildKit можно использовать дополнительные флаги вроде --attest, --sbom, --provenance - всё это уже доступно в версиях nerdctl 2.x.

Примеры использования

Установка nerdctl

Можно скачать готовые бинарники nerdctl-full (для Linux x86_64/ARM64). В них уже есть всё необходимое: CNI, BuildKit и rootless-хелперы.

А если вы на macOS или Windows, то можно просто поставить Lima или Rancher Desktop - оба включают в себя containerd и nerdctl.

Запуск контейнеров

nerdctl run -it --rm alpine
nerdctl build -t myapp .

Работа с Docker Compose

nerdctl compose up -d

Настройка rootless-режима

containerd-rootless-setuptool.sh install
# As a regular user:
nerdctl run -p 8080:80 nginx:alpine

Ленивая загрузка образов

nerdctl --snapshotter=stargz run --rm ghcr.io/stargz-containers/python:3.7-esgz python3 -c 'print("fast pull")'

Шифрование образов

nerdctl image encrypt --recipient=jwe:pub.pem foo foo:enc
nerdctl run foo:enc

Что нового: основные фишки nerdctl v2.1

Выпущенный в июне 2025 года, nerdctl версии 2.1 привнёс несколько заметных улучшений:

  • Поддержка режима UserNS-Remap - это вариант, который удачно сочетает безопасность и производительность.
  • Экспериментальная песочница gomodjail - позволяет ограничить системные вызовы для отдельных Go-модулей, чтобы снизить риски в цепочке поставок.

Параллельно с этим containerd версии 2.1 получил поддержку файловой системы EROFS, возможность монтировать образы как тома в Kubernetes, а также запись в cgroupfs без root-доступа.

Podman популярен для запуска контейнеров в режиме rootless, но не очень подходит для Kubernetes, так как не поддерживает CRI. В то время как nerdctl полностью совместим с CRI, что делает его отличным выбором для Kubernetes-сред с containerd.

Когда стоит использовать nerdctl?

  • Если вы хотите пользоваться инструментами в стиле Docker, но без Docker Engine.
  • Если работаете в Kubernetes или K3s, где containerd - это дефолтный рантайм.
  • Если вам важны rootless-запуск, ленивая загрузка, шифрование образов или дистрибуция через IPFS.
  • Если цените современное управление контейнерами и образами с упором на безопасность цепочки поставок.

Советы и подводные камни

  • Обязательно ставьте nerdctl-full, если планируете использовать Compose, rootless-режим или BuildKit.
  • Для настройки rootless-режима используйте containerd-rootless-setuptool.sh. Его может не быть в пакетных установках, например на NixOS.
  • При переходе между мажорными версиями (например, с 1.x на 2.x), лучше переустановить rootless-настройку (uninstall → install) и пересоздать конфиг.

Вывод

nerdctl - это must-have CLI для тех, кто заменяет Docker на containerd: всё привычно, функционал продвинутый, отлично интегрируется с Kubernetes.

Инструмент активно развивается, а свежий релиз версии 2.1 привнёс улучшения на уровне корпоративной безопасности - nerdctl вполне готов к корпоративной эксплуатации.


Report Page