Если вы видите что-то необычное, просто сообщите мне. Skip to main content

Containerd

В качестве альтернативы можно воспользоваться другим решением.

Запуск

Вот пример того, как можно запустить контейнер с использованием ctr:

Сначала убедитесь, что у вас есть образ контейнера, который вы хотите запустить. Если у вас его нет, вы можете сначала его загрузить с помощью ctr командой, например:

ctr images pull docker.io/library/alpine:latest

Затем запустите контейнер с помощью ctr run команды, указав необходимые параметры, например:

ctr run --rm -t --net-host docker.io/library/alpine:latest my-container sh

Здесь:

  • --rm - указывает на то, что контейнер должен быть удален после завершения работы
  • -t - выделяет псевдотерминал для контейнера
  • --net-host - позволяет контейнеру использовать сеть хоста
  • docker.io/library/alpine:latest - образ контейнера, который мы будем использовать
  • my-container - имя контейнера
  • sh - команда, которая будет выполнена внутри контейнера (в данном случае, запуск оболочки sh) Таким образом, вы сможете запустить контейнер на хосте только с помощью containerd. 🚀

Сборка

Для сборки образа с помощью containerd вам обычно требуется создать и сконфигурировать контейнер с помощью ctr CLI (Command Line Interface). Вот пример того, как можно собрать образ с использованием containerd:

Установите containerd и ctr CLI на вашем хосте. Создайте конфигурационный файл для контейнера (например, config.toml):

[
process
]
args = ["echo", "Hello, World!"]

Создайте снимок (snapshot) с этим содержимым:

ctr snapshot create my-snapshot my-snapshot-bundle bundle.tar config.toml

Создайте контейнер с использованием этого снимка:

ctr container create my-container --snapshot my-snapshot

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

ctr container start my-container

Теперь у вас есть контейнер, запущенный с заданным содержимым. Для создания образа вы можете осуществить экспорт контейнера в архив и использовать его в дальнейшем:

ctr snapshot mount my-snapshot mountpoint
tar -C mountpoint -c . | docker import - my-image:tag

Образ my-image:tag теперь содержит содержимое вашего контейнера и может быть запущен через docker run.

Учтите, что containerd предоставляет более низкоуровневый доступ к контейнерам, поэтому процесс сборки образов может потребовать больше ручной работы и конфигурирования по сравнению с более высокоуровневыми инструментами типа Docker.