Ошибка "Отсутствует манифест" при запуске $ rkt
У меня есть следующий сценарий оболочки, который создает базу Debian aci
контейнер для rkt
/ appC
:
#!/bin/sh
set -e
# $ zcat debian.aci | tree | head
# $ rkt run debian.aci --insecure-options=image
export MY_CHROOT=/var/lib/container/aci/debian
mkdir -p $MY_CHROOT
debootstrap --verbose --arch=amd64 --include=iputils-ping,iproute --variant=minbase stable $MY_CHROOT/rootfs http://httpredir.debian.org/debian
cat > $MY_CHROOT/manifest <<EOF
{
"acKind": "ImageManifest",
"acVersion": "0.8.9",
"name": "debian",
"labels": [
{"name": "arch", "value": "amd64"},
{"name": "os", "value": "linux"},
{"name": "version", "value": "1.0.0"}
],
"app": {
"exec": [
"/bin/sh",
"echo",
"Hello, World from $MY_ENV_VAR!"
],
"user": "0",
"group": "0",
"environment": [
{
"name": "MY_ENV_VAR",
"value": "$(whoami)"
}
],
},
"annotations": {
"authors": "Istvan Lantos <email@addess.com>"
}
}
EOF
# use gpg to create a sig, but we'll skip that for now
tar cvvf - $MY_CHROOT/manifest $MY_CHROOT/rootfs | gzip -c > $MY_CHROOT/debian.aci
Чтобы проверить это manifest
файл присутствует:
root@debian:/var/lib/container/aci/debian# zcat debian.aci | tree | head
.
├── debian.aci
├── manifest
└── rootfs
├── bin
│ ├── bash
│ ├── cat
│ ├── chacl
│ ├── chgrp
│ ├── chmod
Когда я пытаюсь запустить этот контейнер с $ rkt run debian.aci --insecure-options=image
Команда, я получил следующую ошибку:
run: missing manifest
Я следовал этим инструкциям для структуры файла:
https://github.com/appc/spec/blob/master/spec/aci.md#image-layout
https://github.com/appc/spec/blob/master/examples/image.json
Почему не работает?
Спасибо за помощь!
1 ответ
На самом деле, ошибка вызвана tar
который включает в себя абсолютные пути в архиве.
Таким образом, решение заключается в cd
в каталоге и не использовать абсолютные пути с префиксом $MY_CHROOT
,
Источник: /questions/9833937/sliyanie-dvuh-massivov-vnet/9833971#9833971