2017-01-05 2 views
0

У меня есть следующий сценарий оболочки, который создает основу для 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 protected]>" 
    } 
} 
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 файл присутствует:

[email protected]:/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

https://github.com/appc/spec/blob/master/spec/aci.md#image-layout

https://github.com/appc/spec/blob/master/examples/image.json

Почему не работает?

Благодарим за помощь!

ответ

0

На самом деле ошибка вызвана tar, которая включает в себя абсолютные пути в архиве.

Таким образом, решение является cd в каталоге и не использует абсолютные пути с префиксом $MY_CHROOT.

https://unix.stackexchange.com/a/59246/120771

Смежные вопросы