watchtower/docs/assets/images/update-flow.svg

1 line
No EOL
22 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="SEQUENCE" height="933px" preserveAspectRatio="none" style="width:1728px;height:933px;background:#FFFFFF;" version="1.1" viewBox="0 0 1728 933" width="1728px" zoomAndPan="magnify"><title>Watchtower Update Flow</title><defs/><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="199.1992" x="766.2986" y="27.9951">Watchtower Update Flow</text><rect fill="none" height="367.5938" style="stroke:#000000;stroke-width:1.5;" width="1318.1035" x="404.6929" y="222.9922"/><rect fill="none" height="77.3984" style="stroke:#000000;stroke-width:1.5;" width="1298.1035" x="414.6929" y="477.0547"/><g><title>User</title><rect fill="#000000" fill-opacity="0.00000" height="734.1875" width="8" x="19.9551" y="118.5938"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="23" x2="23" y1="118.5938" y2="852.7813"/></g><g><title>cmd .root.</title><rect fill="#000000" fill-opacity="0.00000" height="734.1875" width="8" x="288.9746" y="118.5938"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="291.9888" x2="291.9888" y1="118.5938" y2="852.7813"/></g><g><title>internal.actions.Update</title><rect fill="#000000" fill-opacity="0.00000" height="734.1875" width="8" x="509.8027" y="118.5938"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="513.6929" x2="513.6929" y1="118.5938" y2="852.7813"/></g><g><title>container.Client</title><rect fill="#000000" fill-opacity="0.00000" height="734.1875" width="8" x="876.7793" y="118.5938"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="880.1211" x2="880.1211" y1="118.5938" y2="852.7813"/></g><g><title>pkg.registry.digest</title><rect fill="#000000" fill-opacity="0.00000" height="734.1875" width="8" x="1162.3662" y="118.5938"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="1166.1943" x2="1166.1943" y1="118.5938" y2="852.7813"/></g><g><title>pkg.registry.auth</title><rect fill="#000000" fill-opacity="0.00000" height="734.1875" width="8" x="1322.4028" y="118.5938"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="1325.8535" x2="1325.8535" y1="118.5938" y2="852.7813"/></g><g><title>pkg.registry</title><rect fill="#000000" fill-opacity="0.00000" height="734.1875" width="8" x="1531.5615" y="118.5938"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="1535.2778" x2="1535.2778" y1="118.5938" y2="852.7813"/></g><g><title>Docker Engine</title><rect fill="#000000" fill-opacity="0.00000" height="734.1875" width="8" x="1644.8208" y="118.5938"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="1647.8452" x2="1647.8452" y1="118.5938" y2="852.7813"/></g><g class="participant participant-head" data-participant="CLI"><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="31.9102" x="5" y="115.292">User</text><ellipse cx="23.9551" cy="50.7969" fill="#E2E2F0" rx="8" ry="8" style="stroke:#181818;stroke-width:0.5;"/><path d="M23.9551,58.7969 L23.9551,85.7969 M10.9551,66.7969 L36.9551,66.7969 M23.9551,85.7969 L10.9551,100.7969 M23.9551,85.7969 L36.9551,100.7969" fill="none" style="stroke:#181818;stroke-width:0.5;"/></g><g class="participant participant-tail" data-participant="CLI"><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="31.9102" x="5" y="864.7764">User</text><ellipse cx="23.9551" cy="876.5781" fill="#E2E2F0" rx="8" ry="8" style="stroke:#181818;stroke-width:0.5;"/><path d="M23.9551,884.5781 L23.9551,911.5781 M10.9551,892.5781 L36.9551,892.5781 M23.9551,911.5781 L10.9551,926.5781 M23.9551,911.5781 L36.9551,926.5781" fill="none" style="stroke:#181818;stroke-width:0.5;"/></g><g class="participant participant-head" data-participant="CMD"><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="87.9717" x="248.9888" y="87.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="73.9717" x="255.9888" y="107.292">cmd (root)</text></g><g class="participant participant-tail" data-participant="CMD"><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="87.9717" x="248.9888" y="851.7813"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="73.9717" x="255.9888" y="871.7764">cmd (root)</text></g><g class="participant participant-head" data-participant="ACT"><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="178.2197" x="424.6929" y="87.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="164.2197" x="431.6929" y="107.292">internal/actions.Update</text></g><g class="participant participant-tail" data-participant="ACT"><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="178.2197" x="424.6929" y="851.7813"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="164.2197" x="431.6929" y="871.7764">internal/actions.Update</text></g><g class="participant participant-head" data-participant="CLIENT"><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="125.3164" x="818.1211" y="87.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="111.3164" x="825.1211" y="107.292">container.Client</text></g><g class="participant participant-tail" data-participant="CLIENT"><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="125.3164" x="818.1211" y="851.7813"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="111.3164" x="825.1211" y="871.7764">container.Client</text></g><g class="participant participant-head" data-participant="DIG"><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="146.3438" x="1093.1943" y="87.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="132.3438" x="1100.1943" y="107.292">pkg/registry/digest</text></g><g class="participant participant-tail" data-participant="DIG"><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="146.3438" x="1093.1943" y="851.7813"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="132.3438" x="1100.1943" y="871.7764">pkg/registry/digest</text></g><g class="participant participant-head" data-participant="AUTH"><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="135.0986" x="1258.8535" y="87.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="121.0986" x="1265.8535" y="107.292">pkg/registry/auth</text></g><g class="participant participant-tail" data-participant="AUTH"><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="135.0986" x="1258.8535" y="851.7813"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="121.0986" x="1265.8535" y="871.7764">pkg/registry/auth</text></g><g class="participant participant-head" data-participant="REG"><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="98.5674" x="1486.2778" y="87.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="84.5674" x="1493.2778" y="107.292">pkg/registry</text></g><g class="participant participant-tail" data-participant="REG"><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="98.5674" x="1486.2778" y="851.7813"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="84.5674" x="1493.2778" y="871.7764">pkg/registry</text></g><g class="participant participant-head" data-participant="DOCKER"><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="101.9512" x="1594.8452" y="115.292">Docker Engine</text><path d="M1630.8208,66.2969 C1630.8208,56.2969 1648.8208,56.2969 1648.8208,56.2969 C1648.8208,56.2969 1666.8208,56.2969 1666.8208,66.2969 L1666.8208,92.2969 C1666.8208,102.2969 1648.8208,102.2969 1648.8208,102.2969 C1648.8208,102.2969 1630.8208,102.2969 1630.8208,92.2969 L1630.8208,66.2969" fill="#E2E2F0" style="stroke:#181818;stroke-width:0.5;"/><path d="M1630.8208,66.2969 C1630.8208,76.2969 1648.8208,76.2969 1648.8208,76.2969 C1648.8208,76.2969 1666.8208,76.2969 1666.8208,66.2969" fill="none" style="stroke:#181818;stroke-width:0.5;"/></g><g class="participant participant-tail" data-participant="DOCKER"><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="101.9512" x="1594.8452" y="864.7764">Docker Engine</text><path d="M1630.8208,878.0781 C1630.8208,868.0781 1648.8208,868.0781 1648.8208,868.0781 C1648.8208,868.0781 1666.8208,868.0781 1666.8208,878.0781 L1666.8208,904.0781 C1666.8208,914.0781 1648.8208,914.0781 1648.8208,914.0781 C1648.8208,914.0781 1630.8208,914.0781 1630.8208,904.0781 L1630.8208,878.0781" fill="#E2E2F0" style="stroke:#181818;stroke-width:0.5;"/><path d="M1630.8208,878.0781 C1630.8208,888.0781 1648.8208,888.0781 1648.8208,888.0781 C1648.8208,888.0781 1666.8208,888.0781 1666.8208,878.0781" fill="none" style="stroke:#181818;stroke-width:0.5;"/></g><g class="message" data-participant-1="CLI" data-participant-2="CMD"><polygon fill="#181818" points="280.9746,145.7266,290.9746,149.7266,280.9746,153.7266,284.9746,149.7266" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="23.9551" x2="286.9746" y1="149.7266" y2="149.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="245.0195" x="30.9551" y="144.6606">trigger runUpdatesWithNotifications()</text></g><g class="message" data-participant-1="CMD" data-participant-2="ACT"><polygon fill="#181818" points="501.8027,174.8594,511.8027,178.8594,501.8027,182.8594,505.8027,178.8594" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="292.9746" x2="507.8027" y1="178.8594" y2="178.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="196.8281" x="299.9746" y="173.7935">Update(client, UpdateParams)</text></g><g class="message" data-participant-1="ACT" data-participant-2="CLIENT"><polygon fill="#181818" points="868.7793,203.9922,878.7793,207.9922,868.7793,211.9922,872.7793,207.9922" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="513.8027" x2="874.7793" y1="207.9922" y2="207.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="133.4087" x="520.8027" y="202.9263">ListContainers(filter)</text></g><path d="M404.6929,222.9922 L481.3169,222.9922 L481.3169,230.125 L471.3169,240.125 L404.6929,240.125 L404.6929,222.9922" fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="367.5938" style="stroke:#000000;stroke-width:1.5;" width="1318.1035" x="404.6929" y="222.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="31.624" x="419.6929" y="236.0591">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="93.7202" x="496.3169" y="235.2026">[per container]</text><g class="message" data-participant-1="ACT" data-participant-2="CLIENT"><polygon fill="#181818" points="868.7793,257.2578,878.7793,261.2578,868.7793,265.2578,872.7793,261.2578" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="513.8027" x2="874.7793" y1="261.2578" y2="261.2578"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="236.0313" x="520.8027" y="256.1919">IsContainerStale(container, params)</text></g><g class="message" data-participant-1="CLIENT" data-participant-2="CLIENT"><line style="stroke:#181818;stroke-width:1;" x1="880.7793" x2="922.7793" y1="290.3906" y2="290.3906"/><line style="stroke:#181818;stroke-width:1;" x1="922.7793" x2="922.7793" y1="290.3906" y2="303.3906"/><line style="stroke:#181818;stroke-width:1;" x1="881.7793" x2="922.7793" y1="303.3906" y2="303.3906"/><polygon fill="#181818" points="891.7793,299.3906,881.7793,303.3906,891.7793,307.3906,887.7793,303.3906" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="122.8652" x="887.7793" y="285.3247">PullImage (maybe)</text></g><g class="message" data-participant-1="CLIENT" data-participant-2="DIG"><polygon fill="#181818" points="1154.3662,328.5234,1164.3662,332.5234,1154.3662,336.5234,1158.3662,332.5234" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="880.7793" x2="1160.3662" y1="332.5234" y2="332.5234"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="261.5869" x="887.7793" y="327.4575">CompareDigest(container, registryAuth)</text></g><g class="message" data-participant-1="DIG" data-participant-2="AUTH"><polygon fill="#181818" points="1314.4028,357.6563,1324.4028,361.6563,1314.4028,365.6563,1318.4028,361.6563" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="1166.3662" x2="1320.4028" y1="361.6563" y2="361.6563"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="136.0366" x="1173.3662" y="356.5903">GetToken(challenge)</text></g><g class="message" data-participant-1="AUTH" data-participant-2="AUTH"><line style="stroke:#181818;stroke-width:1;" x1="1326.4028" x2="1368.4028" y1="390.7891" y2="390.7891"/><line style="stroke:#181818;stroke-width:1;" x1="1368.4028" x2="1368.4028" y1="390.7891" y2="403.7891"/><line style="stroke:#181818;stroke-width:1;" x1="1327.4028" x2="1368.4028" y1="403.7891" y2="403.7891"/><polygon fill="#181818" points="1337.4028,399.7891,1327.4028,403.7891,1337.4028,407.7891,1333.4028,403.7891" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="195.1587" x="1333.4028" y="385.7231">getCachedToken / storeToken</text></g><g class="message" data-participant-1="DIG" data-participant-2="REG"><polygon fill="#181818" points="1523.5615,428.9219,1533.5615,432.9219,1523.5615,436.9219,1527.5615,432.9219" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="1166.3662" x2="1529.5615" y1="432.9219" y2="432.9219"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="138.9121" x="1173.3662" y="427.856">newTransport() (uses</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" text-decoration="line-through" textLength="118.6694" x="1316.4106" y="427.856">insecure-registry /</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="74.9912" x="1439.2124" y="427.856">registry-ca)</text></g><g class="message" data-participant-1="DIG" data-participant-2="DOCKER"><polygon fill="#181818" points="1636.8208,458.0547,1646.8208,462.0547,1636.8208,466.0547,1640.8208,462.0547" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="1166.3662" x2="1642.8208" y1="462.0547" y2="462.0547"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="170.6123" x="1173.3662" y="456.9888">HEAD manifest with token</text></g><path d="M414.6929,477.0547 L479.1357,477.0547 L479.1357,484.1875 L469.1357,494.1875 L414.6929,494.1875 L414.6929,477.0547" fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="77.3984" style="stroke:#000000;stroke-width:1.5;" width="1298.1035" x="414.6929" y="477.0547"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19.4429" x="429.6929" y="490.1216">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="105.1714" x="494.1357" y="489.2651">[digest matches]</text><g class="message" data-participant-1="CLIENT" data-participant-2="ACT"><polygon fill="#181818" points="524.8027,511.3203,514.8027,515.3203,524.8027,519.3203,520.8027,515.3203" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;stroke-dasharray:2,2;" x1="518.8027" x2="879.7793" y1="515.3203" y2="515.3203"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="96.9097" x="530.8027" y="510.2544">no pull needed</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="414.6929" x2="1712.7964" y1="524.3203" y2="524.3203"/><g class="message" data-participant-1="CLIENT" data-participant-2="DOCKER"><polygon fill="#181818" points="1636.8208,542.4531,1646.8208,546.4531,1636.8208,550.4531,1640.8208,546.4531" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="880.7793" x2="1642.8208" y1="546.4531" y2="546.4531"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="114.6514" x="887.7793" y="541.3872">ImagePull(image)</text></g><g class="message" data-participant-1="CLIENT" data-participant-2="ACT"><polygon fill="#181818" points="524.8027,578.5859,514.8027,582.5859,524.8027,586.5859,520.8027,582.5859" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;stroke-dasharray:2,2;" x1="518.8027" x2="879.7793" y1="582.5859" y2="582.5859"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="240.7095" x="530.8027" y="577.52">HasNewImage -&gt; stale/newestImage</text></g><g class="message" data-participant-1="ACT" data-participant-2="ACT"><line style="stroke:#181818;stroke-width:1;" x1="513.8027" x2="555.8027" y1="618.7188" y2="618.7188"/><line style="stroke:#181818;stroke-width:1;" x1="555.8027" x2="555.8027" y1="618.7188" y2="631.7188"/><line style="stroke:#181818;stroke-width:1;" x1="514.8027" x2="555.8027" y1="631.7188" y2="631.7188"/><polygon fill="#181818" points="524.8027,627.7188,514.8027,631.7188,524.8027,635.7188,520.8027,631.7188" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="135.7764" x="520.8027" y="613.6528">SortByDependencies</text></g><g class="message" data-participant-1="ACT" data-participant-2="CLIENT"><polygon fill="#181818" points="868.7793,656.8516,878.7793,660.8516,868.7793,664.8516,872.7793,660.8516" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="513.8027" x2="874.7793" y1="660.8516" y2="660.8516"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="342.9766" x="520.8027" y="655.7856">StopContainer / StartContainer (with lifecycle hooks)</text></g><g class="message" data-participant-1="ACT" data-participant-2="CLIENT"><polygon fill="#181818" points="868.7793,685.9844,878.7793,689.9844,868.7793,693.9844,872.7793,689.9844" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="513.8027" x2="874.7793" y1="689.9844" y2="689.9844"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="190.2393" x="520.8027" y="684.9185">RemoveImageByID (cleanup)</text></g><g class="message" data-participant-1="ACT" data-participant-2="CMD"><polygon fill="#181818" points="303.9746,715.1172,293.9746,719.1172,303.9746,723.1172,299.9746,719.1172" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;stroke-dasharray:2,2;" x1="297.9746" x2="512.8027" y1="719.1172" y2="719.1172"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="114.645" x="309.9746" y="714.0513">progress.Report()</text></g><path d="M1331,732.1172 L1331,772.1172 L1716,772.1172 L1716,742.1172 L1706,732.1172 L1331,732.1172" fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M1706,732.1172 L1706,742.1172 L1716,742.1172 L1706,732.1172" fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="364.7681" x="1337" y="749.1841">Tokens are cached by auth URL (realm+service+scope)</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="286.1333" x="1337" y="764.3169">ExpiresIn (seconds) sets TTL when provided</text><path d="M1162,782.3828 L1162,837.3828 L1529,837.3828 L1529,792.3828 L1519,782.3828 L1162,782.3828" fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M1519,782.3828 L1519,792.3828 L1529,792.3828 L1519,782.3828" fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="156.6538" x="1168" y="799.4497">TLS is secure-by-default</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="232.4385" x="1168" y="814.5825">`--registry-ca` provides PEM bundle</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="346.9312" x="1168" y="829.7153">`--registry-ca-validate` fails startup on invalid bundle</text><!--SRC=[VLJ1Sjem4BtxAtOucKaTxXmwas2QC2Lf1iZacaLUR0sof95aA7_VjMmJGjhwP4blz-s-VLAGGH6yOH1LC4Toy6eB30G_b3acA8BX7S_Rw66sN2GMNP12MjG1Hg8k87N6XF4edZ_bdy-b3kGqgWddaKRxsovt1D_DDbV9Z0ueDRdRcPAamwYdd3zV0Us-d3WgfG_kD2baIRx3vek7_m2n2LL7_Bfv_3SkGbRpXuGBnIrwWb5kn9u5cEkIg-kOVir-pbT9mjL1zhtjUmh1oR9ac6jqrwL_aw5wDa7kfC3OVZfE6Df6SFFJNkXKn6w_zSiNT5ZxSSA8c3hsFuKb5pSR1FBfJYfMTfmeOonOPZsBbm1_Ly4BVmvT1rHCEIo_WUtvsh0EVndvqYYrgB4aI6iyRUaQnv9FOMPgpa9vdCHbxa7JEvQ-YsHyR9z7C8K72Xkp9vsA2fKYNVRfszCFL4bXXgAY8c9X0fujIN5ncP97DWLDnur3xQrn8Hr3sdZoa6LIUnADesmeYBDavqKcy5DntN2dy3Y_ow56BNVS5Xnvc13EhAW2TDPZ25yTyd7xKfrXpDg0PHcvE2geY31IdhxWFvYZugtqgMp_kkf85ydVqZ-YVwPZDoJUy-s09om4bnOtapQmDqGCMBCuzwUSB1-G5f9Bl_BBEXXxTWnhnQPn7-w3D6gXM1Tn4lnsLCRilpfsHRKvK2pX_hJ8WNrEg1lR0uThOvqf7Nb_kw9kQacY3Jy_V9kg06RNNLU0E70Fx3CGqGwmFK5xf-5rjUH7Y53LD_nE7QIW6o-CZRBDVrl9sHSQKhQ0qOKVWwVWORDPmh5YFp7_GRPpOJMWPUxv5UqYVViKCFjo3T93RwFjAIjeXuqAVFJ-oKdlGq8FB_Cds3QwKFG5bHrGoVQslyCEfVBjr5neB1WDKiV38VHSrXy0]--></g></svg>