blob: 5fbe947799b263ab2d91b4b031237cd385c7fdf0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
digraph ociimage {
rankdir=LR;
node [shape=box];
edge [splines=polyline];
lrank [style=invisible][color=white];
"manifest A"[label=<<table border="0">
<tr><td align="center">image manifest (platform A)</td></tr>
<tr><td align="center"></td></tr>
<tr><td align="left">- schema version</td></tr>
<tr><td align="left">- media type</td></tr>
<tr><td align="left">- config : descriptor</td></tr>
<tr><td align="left">- layers : array of descriptors</td></tr>
<tr><td align="left">- (annotations)</td></tr>
</table>>];
"image index"[label=<<table border="0">
<tr><td align="center">image index</td></tr>
<tr><td></td></tr>
<tr><td align="left">- schema version</td></tr>
<tr><td align="left">- media type</td></tr>
<tr><td align="left">- manifests : array of descriptors</td></tr>
<tr><td align="left">- (annotations)</td></tr>
</table>>];
// 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=<<table border="0">
<tr><td align="center">configuration</td></tr>
<tr><td></td></tr>
<tr><td align="left">- rootfs/diff_ids : array of layer ids</td></tr>
<tr><td align="left">- container config</td></tr>
<tr><td align="left">- history</td></tr>
</table>>];
"manifest A" -> "configuration";
"layer 0"[label=<<table border="0">
<tr><td align="center">layer</td></tr>
<tr><td></td></tr>
<tr><td align="left">file system additions, overwrites, and deletions</td></tr>
</table>>];
"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=<<table border="0">
<tr><td align="center">image reference</td></tr>
<tr><td></td></tr>
<tr><td align="left">- hostname</td></tr>
<tr><td align="left">- path</td></tr>
<tr><td align="left">- (tag)</td></tr>
<tr><td align="left">- (SHA-256 digest of compressed content)</td></tr>
</table>>];
k2 -> k3[color=brown][style=solid][label=<<table border="0">
<tr><td align="center">descriptor</td></tr>
<tr><td></td></tr>
<tr><td align="left">targets content with the following properties:</td></tr>
<tr><td align="left">- media type</td></tr>
<tr><td align="left">- SHA-256 digest of compressed content</td></tr>
<tr><td align="left">- size</td></tr>
<tr><td align="left">- (urls)</td></tr>
<tr><td align="left">- (annotations)</td></tr>
</table>>];
k3 -> k4[color=blue][style=dotted][label=<<table border="0">
<tr><td align="center">id</td></tr>
<tr><td></td></tr>
<tr><td align="left">- SHA-256 digest of uncompressed content</td></tr>
</table>>];
}
{ rank=same; lrank -> "layer 2" -> "layer 1" -> "layer 0" [style=invis] }
{ rank=same; "manifest A", "image manifest (platform B)" }
}
|