App Container Image (ACI)
App Container Executor (ACE)
App Container Metadata Service
App Container Image Discovery
Image d'un conteneur logiciel : fichiers et métadonnées nécessaire à l'exécution
Mécanisme de découverte : procédé pour identifier et localiser des conteneurs
Moteur d'exécution de conteneurs : gère le déploiement de conteneurs
Service de métadonnées : service fournissant des métadonnées aux conteneurs
hello.aci
App Container Executor
Executor Perspective
App Perspective
$ find . /manifest /rootfs /rootfs/usr/bin/hello
cd $(mktemp -d -t temp.XXXX)
mkdir hello
tar xzvf /var/lib/pce/heelo.aci -C hello{ "acKind": "ImageManifest",
"acVersion": "0.3.0",
"name": "example.com/reduce-worker",
"labels": [
{ "name": "version", "value": "1.0.0" },
{ "name": "arch", "value": "amd64" },
{ "name": "os", "value": "linux" }
],
"app": {
"exec": [ "/usr/bin/reduce-worker", "--quiet" ],
"user": "100",
"group": "300",
"eventHandlers": [
{ "exec": [
"/usr/bin/data-downloader"
],
"name": "pre-start"
}, {"exec": [
"/usr/bin/deregister-worker",
"--verbose"
],
"name": "post-stop"
}
],
"workingDirectory": "/opt/work",
"environment": [
{ "name": "REDUCE_WORKER_DEBUG", "value": "true" }
],
"isolators": [
{ "name": "cpu/shares", "value": "20" },
{ "name": "memory/limit", "value": "1G" },
{ "name": "cpu/mask", "value": "0-3" },
{ "name": "capabilities/bounding-set",
"value": "CAP_NET_BIND_SERVICE CAP_SYS_ADMIN" }
],
"mountPoints": [
{ "name": "work",
"path": "/var/lib/work",
"readOnly": false
}
],
"ports": [
{ "name": "health",
"port": 4000,
"protocol": "tcp",
"socketActivated": true
}
]
},
"dependencies": [
{
"app": "example.com/reduce-worker-base",
"imageID": "sha512-...",
"labels": [
{ "name": "os", "value": "linux" },
{ "name": "env", "value": "canary" }
]
}
],
"pathWhitelist": [
"/etc/ca/example.com/crt",
"/usr/bin/map-reduce-worker",
"/opt/libs/reduce-toolkit.so",
"/etc/reduce-worker.conf",
"/etc/systemd/system/"
],
"annotations": [
{ "name": "authors",
"value": "Carly Container, Nat Network" },
{ "name": "created",
"value": "2014-10-27T19:32:27.67021798Z" },
{ "name": "documentation",
"value": "https://example.com/docs" },
{ "name": "homepage",
"value": "https://example.com" }
]
}{
"acVersion": "0.3.0",
"acKind": "ContainerRuntimeManifest",
"uuid": "6733C088-A507-4694-AABF-EDBE4FC5266F",
"apps": [
{
"app": "example.com/reduce-worker-1.0.0",
"imageID": "sha512-...",
"mounts": [
{"volume": "work", "mountPoint": "work"}
]
},
{
"app": "example.com/worker-backup-1.0.0",
"imageID": "sha512-...",
"isolators": [
{
"name": "memory/limit",
"value": "1G"
}
],
"annotations": [
{
"name": "foo",
"value": "baz"
}
],
"mounts": [
{"volume": "work", "mountPoint": "backup"}
]
},
{
"app": "example.com/reduce-worker-register-1.0.0",
"imageID": "sha512-..."
}
],
"volumes": [
{
"name": "work",
"kind": "host",
"source": "/opt/tenant1/work",
"readOnly": true
}
],
"isolators": [
{
"name": "memory/limit",
"value": "4G"
}
],
"annotations": [
{
"name": "ip-address",
"value": "10.1.2.3"
}
]
}