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