...
1digraph {
2 compound=true;
3 rankdir="LR";
4 ordering = in;
5
6 subgraph cluster_registry {
7 label = "registry";
8
9 subgraph cluster_tags {
10 label = "/v2/.../tags/list";
11
12 tag [label="tag", shape="rect"];
13 tag2 [label="tag", shape="rect"];
14 }
15
16 subgraph cluster_manifests {
17 label = "/v2/.../manifests/<ref>";
18
19 subgraph cluster_image {
20 label = "image";
21
22 mconfig [label="config", shape="rect"];
23 layers [label="layers", shape="rect"];
24 }
25
26 subgraph cluster_index {
27 label = "signature index";
28
29 imanifest [label="manifests", shape="rect"];
30 }
31 }
32
33 subgraph cluster_blobs {
34 label = "/v2/.../blobs/<sha256>";
35
36 bconfig [label="config", shape="hexagon"];
37
38 l1 [label="layer", shape="folder"];
39 l2 [label="layer", shape="folder"];
40 desc1 [label="descriptor", shape="rect", color="green"];
41 desc2 [label="descriptor", shape="rect", color="green"];
42 }
43
44 layers -> l1;
45 layers -> l2;
46
47 mconfig -> bconfig;
48
49 imanifest -> desc1 [color="green"];
50 imanifest -> desc2 [color="green"];
51
52 desc1 -> mconfig [lhead=cluster_image, color="green"];
53 desc2 -> mconfig [lhead=cluster_image, color="green"];
54
55 tag -> mconfig [style="dashed", lhead=cluster_image];
56 tag2 -> imanifest [style="dashed", lhead=cluster_index];
57 }
58}
View as plain text