digraph ociimage {
rankdir=LR;
node [shape=box];
edge [splines=polyline];
lrank [style=invisible][color=white];
"manifest A"[label=<
image manifest (platform A) |
|
- schema version |
- media type |
- config : descriptor |
- layers : array of descriptors |
- (annotations) |
>];
"image index"[label=<
image index |
|
- schema version |
- media type |
- manifests : array of descriptors |
- (annotations) |
>];
// references
edge [color=red][style=dashed];
client [style=invisible][color=white];
client -> "image index"[label="image reference"];
client -> "manifest A"[label="image reference"];
// descriptors
edge [color=brown][style=solid];
"image index" -> "manifest A";
"image index" -> "image manifest (platform B)";
"configuration"[label=<
configuration |
|
- rootfs/diff_ids : array of layer ids |
- container config |
- history |
>];
"manifest A" -> "configuration";
"layer 0"[label=<
layer |
|
file system additions, overwrites, and deletions |
>];
"layer 1"[label=layer];
"layer 2"[label=layer];
"manifest A" -> "layer 0"[label=0];
"manifest A" -> "layer 1"[label=1];
"manifest A" -> "layer 2"[label=2];
// ids
edge [color=blue][style=dotted];
"client" -> "configuration"[label="image id"];
"configuration" -> "layer 0"[label=0];
"configuration" -> "layer 1"[label=1];
"configuration" -> "layer 2"[label=2];
// key
subgraph cluster {
k1 [label="Key:"][peripheries="0"];
node [style=invisible][color=white];
k2;
k3;
k4;
node [style=solid][color=black];
k1 -> k2[color=red][style=dashed][label=<
image reference |
|
- hostname |
- path |
- (tag) |
- (SHA-256 digest of compressed content) |
>];
k2 -> k3[color=brown][style=solid][label=<
descriptor |
|
targets content with the following properties: |
- media type |
- SHA-256 digest of compressed content |
- size |
- (urls) |
- (annotations) |
>];
k3 -> k4[color=blue][style=dotted][label=<
id |
|
- SHA-256 digest of uncompressed content |
>];
}
{ rank=same; lrank -> "layer 2" -> "layer 1" -> "layer 0" [style=invis] }
{ rank=same; "manifest A", "image manifest (platform B)" }
}