...
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_manifest {
20 label = "manifest";
21
22 mconfig [label="config", shape="rect"];
23 layers [label="layers", shape="rect"];
24 }
25
26 subgraph cluster_manifest2 {
27 label = "manifest";
28
29 mconfig2 [label="config", shape="rect"];
30 layers2 [label="layers", shape="rect"];
31 }
32
33 subgraph cluster_index {
34 label = "index";
35
36 imanifest [label="manifests", shape="rect"];
37 }
38
39 imanifest -> mconfig [lhead=cluster_manifest];
40 imanifest -> mconfig2 [lhead=cluster_manifest2];
41 }
42
43 subgraph cluster_blobs {
44 label = "/v2/.../blobs/<sha256>";
45
46 bconfig [label="config", shape="hexagon"];
47 bconfig2 [label="config", shape="hexagon"];
48
49 l1 [label="layer", shape="folder"];
50 l2 [label="layer", shape="folder"];
51 l3 [label="layer", shape="folder"];
52 }
53
54 layers -> l1;
55 layers -> l2;
56
57 layers2 -> l2;
58 layers2 -> l3;
59
60 mconfig -> bconfig;
61 mconfig2 -> bconfig2;
62
63 tag -> mconfig [style="dashed", lhead=cluster_manifest];
64 tag2 -> imanifest [style="dashed", lhead=cluster_index];
65 }
66}
View as plain text