"缺少清单" $ rkt运行时出错

时间:2017-01-05 20:48:48

标签: rkt appcelerator

我有以下shell脚本为aci / rkt创建了一个Debian base 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

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

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

为什么不工作?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

实际上,错误是由tar引起的,其中包括存档中的绝对路径。

因此解决方案是目录中的cd,而不是使用前缀为$MY_CHROOT的绝对路径。

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