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.