Merge branch 'master' into toc
|
@ -1562,6 +1562,8 @@ manuals:
|
|||
title: Add SANs to cluster certificates
|
||||
- path: ee/ucp/admin/configure/collect-cluster-metrics.md
|
||||
title: Collect UCP cluster metrics with Prometheus
|
||||
- path: /ee/ucp/authorization/configure-rbac-kube/
|
||||
title: Configure Kubernetes Role-Based Access Control
|
||||
- path: ee/ucp/admin/configure/create-audit-logs.md
|
||||
title: Create UCP audit logs
|
||||
- path: /ee/ucp/admin/configure/external-auth/
|
||||
|
|
|
@ -17,6 +17,7 @@ container, and monitor your Docker instance using Prometheus.
|
|||
Currently, you can only monitor Docker itself. You cannot currently monitor your
|
||||
application using the Docker target.
|
||||
|
||||
|
||||
## Configure Docker
|
||||
|
||||
To configure the Docker daemon as a Prometheus target, you need to specify the
|
||||
|
@ -49,7 +50,7 @@ Docker now exposes Prometheus-compatible metrics on port 9323.
|
|||
|
||||
## Configure and run Prometheus
|
||||
|
||||
In this example, Prometheus runs as a Docker service on a Docker swarm.
|
||||
Prometheus runs as a Docker service on a Docker swarm.
|
||||
|
||||
> **Prerequisites**
|
||||
>
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
---
|
||||
title: Allow users to create repositories when pushing
|
||||
description: By default Docker Trusted Registry only allows pushing images to
|
||||
existing repositories. Learn how to change that.
|
||||
keywords: dtr, repository
|
||||
redirect_from:
|
||||
- /datacenter/dtr/2.5/guides/admin/configure/allow-creation-on-push/
|
||||
---
|
||||
|
||||
By default DTR only allows pushing images if the repository exists, and you
|
||||
have write access to the repository.
|
||||
|
||||
As an example, if you try to push to `dtr.example.org/library/java:9`, and the
|
||||
`library/java` repository doesn't exist yet, your push fails.
|
||||
|
||||
You can configure DTR to allow pushing to repositories that don't exist yet.
|
||||
As an administrator, log into the **DTR web UI**, navigate to the **Settings**
|
||||
page, and enable **Create repository on push**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
From now on, when a user pushes to their personal sandbox
|
||||
(`<user-name>/<repository>`), or if the user is an administrator for the
|
||||
organization (`<org>/<repository>`), DTR will create a repository if it doesn't
|
||||
exist yet. In that case, the repository is created as private.
|
||||
|
||||
## Use the CLI to enable pushing to repositories that don't exist yet
|
||||
|
||||
```bash
|
||||
curl --user <admin-user>:<password> \
|
||||
--request POST "<dtr-url>/api/v0/meta/settings" \
|
||||
--header "accept: application/json" \
|
||||
--header "content-type: application/json" \
|
||||
--data "{ \"createRepositoryOnPush\": true}"
|
||||
```
|
|
@ -0,0 +1,81 @@
|
|||
---
|
||||
title: DTR cache configuration reference
|
||||
description: Learn about the different configuration options for DTR caches.
|
||||
keywords: DTR, cache
|
||||
---
|
||||
|
||||
DTR caches are based on Docker Registry, and use the same configuration
|
||||
file format.
|
||||
[Learn more about the configuration options](/registry/configuration.md).
|
||||
|
||||
The DTR cache extends the Docker Registry configuration file format by
|
||||
introducing a new middleware called `downstream` that has three configuration
|
||||
options: `blobttl`, `upstreams`, and `cas`:
|
||||
|
||||
```none
|
||||
# Settings that you would include in a
|
||||
# Docker Registry configuration file followed by
|
||||
|
||||
middleware:
|
||||
registry:
|
||||
- name: downstream
|
||||
options:
|
||||
blobttl: 24h
|
||||
upstreams:
|
||||
- <Externally-reachable address for upstream registry or content cache in format scheme://host:port>
|
||||
cas:
|
||||
- <Absolute path to next-hop upstream registry or content cache CA certificate in the container's filesystem>
|
||||
```
|
||||
|
||||
Below you can find the description for each parameter, specific to DTR caches.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>Parameter</th>
|
||||
<th>Required</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>blobttl</code>
|
||||
</td>
|
||||
<td>
|
||||
no
|
||||
</td>
|
||||
<td>
|
||||
The TTL for blobs in the cache. This field takes a positive integer and an optional suffix indicating the unit of time. If
|
||||
this field is configured, "storage.delete.enabled" must be configured to true. Possible units are:
|
||||
<ul>
|
||||
<li><code>ns</code> (nanoseconds)</li>
|
||||
<li><code>us</code> (microseconds)</li>
|
||||
<li><code>ms</code> (milliseconds)</li>
|
||||
<li><code>s</code> (seconds)</li>
|
||||
<li><code>m</code> (minutes)</li>
|
||||
<li><code>h</code> (hours)</li>
|
||||
</ul>
|
||||
If you omit the suffix, the system interprets the value as nanoseconds.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>cas</code>
|
||||
</td>
|
||||
<td>
|
||||
no
|
||||
</td>
|
||||
<td>
|
||||
An optional list of absolute paths to PEM-encoded CA certificates of upstream registries or content caches.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>upstreams</code>
|
||||
</td>
|
||||
<td>
|
||||
yes
|
||||
</td>
|
||||
<td>
|
||||
A list of externally-reachable addresses for upstream registries of content caches. If more than one host is specified, it will pull from registries in round-robin order.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
|
@ -0,0 +1,76 @@
|
|||
---
|
||||
title: Configure caches for high availability
|
||||
description: Learn how to deploy a DTR cache with fault tolerance and high
|
||||
availability.
|
||||
keywords: DTR, cache
|
||||
---
|
||||
|
||||
If you're deploying a DTR cache in a zone with few users and with no uptime
|
||||
SLAs, a [single cache service is enough for you](simple.md).
|
||||
|
||||
But if you want to make sure your DTR cache is always available to users
|
||||
and is highly performant, you should configure your cache deployment for
|
||||
high availability.
|
||||
|
||||

|
||||
|
||||
## System requirements
|
||||
|
||||
* Multiple nodes, one for each cache replica.
|
||||
* A load balancer.
|
||||
* Shared storage system that has read-after-write consistency.
|
||||
|
||||
The way you deploy a DTR cache is the same, whether you're deploying a single
|
||||
replica or multiple ones. The difference is that you should configure the
|
||||
replicas to store data using a shared storage system.
|
||||
|
||||
When using a shared storage system, once an image layer is cached, any replica
|
||||
is able to serve it to users without having to fetch a new copy from DTR.
|
||||
|
||||
DTR caches support the following storage systems:
|
||||
* Alibaba Cloud Object Storage Service
|
||||
* Amazon S3
|
||||
* Azure Blob Storage
|
||||
* Google Cloud Storage
|
||||
* NFS
|
||||
* Openstack Swift
|
||||
|
||||
If you're using NFS as a shared storage system, make sure the shared
|
||||
directory is configured with:
|
||||
|
||||
```
|
||||
/dtr-cache *(rw,root_squash,no_wdelay)
|
||||
```
|
||||
|
||||
This ensures read-after-write consistency for NFS.
|
||||
|
||||
You should also mount the NFS directory on each node where you'll deploy a
|
||||
DTR cache replica.
|
||||
|
||||
## Label the DTR cache nodes
|
||||
|
||||
Use SSH to log in to a manager node of the swarm where you want to deploy
|
||||
the DTR cache.
|
||||
|
||||
If you're using UCP to manage that swarm you can also use a client bundle to
|
||||
configure your Docker CLI client to connect to that swarm.
|
||||
|
||||
Label each node that is going to run the cache replica, by running:
|
||||
|
||||
```
|
||||
docker node update --label-add dtr.cache=true <node-hostname>
|
||||
```
|
||||
|
||||
## Configure and deploy the cache
|
||||
|
||||
Create the cache configuration files by following the
|
||||
[instructions for deploying a single cache replica](simple.md#prepare-the-cache-deployment).
|
||||
|
||||
Make sure you adapt the `storage` object, using the
|
||||
[configuration options for the shared storage](/registry/configuration.md#storage)
|
||||
of your choice.
|
||||
|
||||
## Configure your load balancer
|
||||
|
||||
The last step is to deploy a load balancer of your choice to load-balance
|
||||
requests across the multiple replicas you deployed.
|
|
@ -0,0 +1,73 @@
|
|||
---
|
||||
title: DTR cache overview
|
||||
description: Deploy DTR caches in different geographical locations for users to
|
||||
pull images faster.
|
||||
keywords: DTR, cache
|
||||
---
|
||||
|
||||
The further away you are from the geographical location where DTR is deployed,
|
||||
the longer it will take the pull and push images.
|
||||
This happens because the files being transferred from DTR to your machine
|
||||
need to travel a longer distance, across multiple networks.
|
||||
|
||||

|
||||
|
||||
To decrease the time to pull an image, you can deploy DTR caches geographically
|
||||
closer to users.
|
||||
|
||||
Caches are transparent to users, since users still login and pull images using
|
||||
the DTR url address.
|
||||
DTR checks if users are authorized to pull the image, and redirects the
|
||||
request to the cache.
|
||||
|
||||

|
||||
|
||||
In this example, DTR is deployed on a datacenter in the United States, and
|
||||
a cache is deployed in the Asia office.
|
||||
|
||||
Users in the Asia office updated their user profile in DTR to fetch from
|
||||
the cache in their office. They pull an image using:
|
||||
|
||||
```
|
||||
# Log in to DTR
|
||||
docker login dtr.example.org
|
||||
|
||||
# Pull image
|
||||
docker image pull dtr.example.org/website/ui:3-stable
|
||||
```
|
||||
|
||||
DTR authenticates the request and checks if the user has permission to pull the
|
||||
image they're requesting. If they have permissions, they'll get an image
|
||||
manifest containing the list of image layers to pull and redirecting them
|
||||
to pull them from the Asia cache.
|
||||
|
||||
When users request those images layers from the Asia cache, the cache pulls
|
||||
them from DTR and keeps a copy that can be used to serve to other users without
|
||||
having to pull the image layers from DTR again.
|
||||
|
||||
## Caches or mirroring policies
|
||||
|
||||
Use caches if you:
|
||||
|
||||
* Want to make image pulls faster for users in different geographical regions.
|
||||
* Want to manage user permissions from a central place.
|
||||
|
||||
If you need users to be able to push images faster, or you want to implement
|
||||
RBAC policies based on different regions, don't use caches.
|
||||
Instead, deploy multiple DTR clusters and implement mirroring policies between
|
||||
them.
|
||||
|
||||

|
||||
|
||||
With mirroring policies you can set up a development pipeline where images
|
||||
are automatically pushed between different DTR repositories, or across
|
||||
DTR deployments.
|
||||
|
||||
As an example you can set up a development pipeline with three different stages.
|
||||
Developers can push and pull images from the development environment,
|
||||
only pull from QA, and have no access to Production.
|
||||
|
||||
With multiple DTR deployments you can control the permissions developers have
|
||||
for each deployment, and you can create policies to automatically push images
|
||||
from one deployment to the next.
|
||||
[Learn more about deployment policies](../../../user/promotion-policies/index.md).
|
|
@ -0,0 +1,272 @@
|
|||
---
|
||||
title: Deploy a DTR cache
|
||||
description: Deploy a DTR cache to make users in remove geographical locations
|
||||
pull images faster.
|
||||
keywords: DTR, cache
|
||||
---
|
||||
|
||||
This example guides you in deploying a DTR cache, assuming that you've got
|
||||
a DTR deployment up and running. It also assumes that you've provisioned
|
||||
[multiple nodes and joined them into a swarm](strategy.md#system-requirements).
|
||||
|
||||

|
||||
|
||||
The DTR cache is going to be deployed as a Docker service, so that Docker
|
||||
automatically takes care of scheduling and restarting the service if
|
||||
something goes wrong.
|
||||
|
||||
We'll manage the cache configuration using a Docker configuration, and the TLS
|
||||
certificates using Docker secrets. This allows you to manage the configurations
|
||||
securely and independently of the node where the cache is actually running.
|
||||
|
||||
## Dedicate a node for the cache
|
||||
|
||||
To make sure the DTR cache is performant, it should be deployed on a node
|
||||
dedicated just for it. Start by labelling the node where you want
|
||||
to deploy the cache, so that you target the deployment to that node.
|
||||
|
||||
Use SSH to log in to a manager node of the swarm where you want to deploy
|
||||
the DTR cache. If you're using UCP to manage that swarm, use a client bundle to
|
||||
configure your Docker CLI client to connect to the swarm.
|
||||
|
||||
```
|
||||
docker node update --label-add dtr.cache=true <node-hostname>
|
||||
```
|
||||
|
||||
[Learn more about labelling nodes](/engine/swarm/manage-nodes.md#add-or-remove-label-metadata).
|
||||
|
||||
|
||||
## Prepare the cache deployment
|
||||
|
||||
Create a file structure that looks like this:
|
||||
|
||||
```
|
||||
├── docker-stack.yml # Stack file to deploy cache with a single command
|
||||
├── config.yml # The cache configuration file
|
||||
└── certs
|
||||
├── cache.cert.pem # The cache public key certificate
|
||||
├── cache.key.pem # The cache private key
|
||||
└── dtr.cert.pem # DTR CA certificate
|
||||
```
|
||||
|
||||
Then add the following content to each of the files:
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a data-toggle="tab" data-target="#tab1">docker-stack.yml</a></li>
|
||||
<li><a data-toggle="tab" data-target="#tab2">config.yml</a></li>
|
||||
<li><a data-toggle="tab" data-target="#tab3">cache.cert.pem</a></li>
|
||||
<li><a data-toggle="tab" data-target="#tab4">cache.key.pem</a></li>
|
||||
<li><a data-toggle="tab" data-target="#tab5">dtr.cert.pem</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div id="tab1" class="tab-pane fade in active">
|
||||
<pre class="highlight">
|
||||
<code>
|
||||
version: "3.3"
|
||||
services:
|
||||
cache:
|
||||
image: {{ page.dtr_org }}/{{ page.dtr_repo }}-content-cache:{{ page.dtr_version }}
|
||||
entrypoint:
|
||||
- /start.sh
|
||||
- "/config.yml"
|
||||
ports:
|
||||
- 443:443
|
||||
deploy:
|
||||
replicas: 1
|
||||
placement:
|
||||
constraints: [node.labels.dtr.cache == true]
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
configs:
|
||||
- config.yml
|
||||
secrets:
|
||||
- dtr.cert.pem
|
||||
- cache.cert.pem
|
||||
- cache.key.pem
|
||||
configs:
|
||||
config.yml:
|
||||
file: ./config.yml
|
||||
secrets:
|
||||
dtr.cert.pem:
|
||||
file: ./certs/dtr.cert.pem
|
||||
cache.cert.pem:
|
||||
file: ./certs/cache.cert.pem
|
||||
cache.key.pem:
|
||||
file: ./certs/cache.key.pem
|
||||
</code>
|
||||
</pre>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<div id="tab2" class="tab-pane fade">
|
||||
<pre class="highlight">
|
||||
<code>
|
||||
version: 0.1
|
||||
log:
|
||||
level: info
|
||||
storage:
|
||||
delete:
|
||||
enabled: true
|
||||
filesystem:
|
||||
rootdirectory: /var/lib/registry
|
||||
http:
|
||||
addr: 0.0.0.0:443
|
||||
secret: generate-random-secret
|
||||
host: https://<cache-url>
|
||||
tls:
|
||||
certificate: /run/secrets/cache.cert.pem
|
||||
key: /run/secrets/cache.key.pem
|
||||
middleware:
|
||||
registry:
|
||||
- name: downstream
|
||||
options:
|
||||
blobttl: 24h
|
||||
upstreams:
|
||||
- https://<dtr-url>:<dtr-port>
|
||||
cas:
|
||||
- /run/secrets/dtr.cert.pem
|
||||
</code>
|
||||
</pre>
|
||||
<hr>
|
||||
</div>
|
||||
<div id="tab3" class="tab-pane fade" markdown="1">
|
||||
|
||||
Add the public key certificate for the cache here. If the certificate has been
|
||||
signed by an intermediate certificate authority, append it's public key
|
||||
certificate at the end of the file.
|
||||
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<div id="tab4" class="tab-pane fade" markdown="1">
|
||||
|
||||
Add the unencrypted private key for the cache here.
|
||||
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<div id="tab5" class="tab-pane fade" markdown="1">
|
||||
|
||||
The cache communicates with DTR using TLS. If you've customized DTR
|
||||
to use TLS certificates issued by a globally trusted certificate authority,
|
||||
the cache automatically trusts DTR.
|
||||
|
||||
But if you're using the default DTR configuration, or DTR is using TLS
|
||||
certificates signed by your own certificate authority, you need to configure
|
||||
the cache to trust DTR.
|
||||
|
||||
Add the DTR CA certificate to the `certs/dtr.cert.pem` file. You can
|
||||
do this by running:
|
||||
|
||||
```
|
||||
curl -sk https://<dtr-url>/ca > certs/dtr.cert.pem
|
||||
```
|
||||
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
With this configuration, the cache fetches image layers from DTR and keeps
|
||||
a local copy for 24 hours. After that, if a user requests that image layer,
|
||||
the cache fetches it again from DTR.
|
||||
|
||||
The cache is configured to persist data inside its container.
|
||||
If something goes wrong with the cache service, Docker automatically redeploys a
|
||||
new container, but previously cached data is not persisted.
|
||||
You can [customize the storage parameters](/registry/configuration.md#storage),
|
||||
if you want to store the image layers using a persistent storage backend.
|
||||
|
||||
Also, the cache is configured to use port 443. If you're already using that
|
||||
port in the swarm, update the deployment and configuration files to use another
|
||||
port. Don't forget to create firewall rules for the port you choose.
|
||||
|
||||
## Deploy the cache
|
||||
|
||||
Now that everything is set up, you can deploy the cache by running:
|
||||
|
||||
```
|
||||
docker stack deploy --compose-file docker-stack.yml dtr-cache
|
||||
```
|
||||
|
||||
You can check if the cache has been successfully deployed by running:
|
||||
|
||||
```
|
||||
docker stack ps dtr-cache
|
||||
```
|
||||
|
||||
Docker should show the dtr-cache stack is running.
|
||||
|
||||
## Register the cache with DTR
|
||||
|
||||
Now that you've deployed a cache, you need to configure DTR to know about it.
|
||||
This is done using the `POST /api/v0/content_caches` API. You can use the
|
||||
DTR interactive API documentation to use this API.
|
||||
|
||||
In the DTR web UI, click the top-right menu, and choose **API docs**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Navigate to the `POST /api/v0/content_caches` line and click it to expand.
|
||||
In the **body** field include:
|
||||
|
||||
```
|
||||
{
|
||||
"name": "region-asia",
|
||||
"host": "https://<cache-url>:<cache-port>"
|
||||
}
|
||||
```
|
||||
|
||||
Click the **Try it out!** button to make the API call.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
## Configure your user account
|
||||
|
||||
Now that you've registered the cache with DTR, users can configure
|
||||
their user profile to pull images from DTR or the cache.
|
||||
|
||||
In the DTR web UI, navigate to your **Account**, click the **Settings**
|
||||
tab, and change the **Content Cache** settings to use the cache you deployed.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
If you need to set this for multiple users at the same time, use the
|
||||
`/api/v0/accounts/{username}/settings` API endpoint.
|
||||
|
||||
Now when you pull images, you'll be using the cache.
|
||||
|
||||
## Test that the cache is working
|
||||
|
||||
To validate that the cache is working as expected:
|
||||
|
||||
1. [Push an image to DTR](../../../user/manage-images/pull-and-push-images.md).
|
||||
2. Make sure your user account is configured to use the cache.
|
||||
3. Delete the image from your local system.
|
||||
4. Pull the image from DTR.
|
||||
|
||||
|
||||
To validate that the cache is actually serving your request, and to
|
||||
troubleshoot misconfigurations, check the logs for the cache service
|
||||
by running:
|
||||
|
||||
```
|
||||
docker service logs --follow dtr-cache_cache
|
||||
```
|
||||
|
||||
The most common causes of configuration are due to TLS authentication:
|
||||
* DTR not trusting the cache TLS certificates.
|
||||
* The cache not trusting DTR TLS certificates.
|
||||
* Your machine not trusting DTR or the cache.
|
||||
|
||||
When this happens, check the cache logs to troubleshoot the
|
||||
misconfiguration.
|
||||
|
||||
## Clean up sensitive files
|
||||
|
||||
The certificates and private keys are now managed by Docker in a secure way.
|
||||
Don't forget to delete sensitive files you've created on disk, like the
|
||||
private keys for the cache:
|
||||
|
||||
```
|
||||
rm -rf certs
|
||||
```
|
|
@ -0,0 +1,58 @@
|
|||
---
|
||||
title: Cache deployment strategy
|
||||
description: Learn how to deploy DTR caches across multiple datacenters to make
|
||||
image pulls faster.
|
||||
keywords: DTR, cache
|
||||
---
|
||||
|
||||
The main reason to use a DTR cache is so that users can pull images from
|
||||
a service that's geographically closer to them.
|
||||
|
||||
In this example a company has developers spread across three locations: United
|
||||
States, Asia, and Europe. Developers working in the US office can pull their
|
||||
images from DTR without problem, but developers in the Asia and Europe offices
|
||||
complain that it takes them a long time to pulls images.
|
||||
|
||||

|
||||
|
||||
To address that, you can deploy DTR caches in the Asia and Europe offices, so
|
||||
that developers working from there can pull images much faster.
|
||||
|
||||
## Deployment overview
|
||||
|
||||
To deploy the DTR caches for this scenario, you need three datacenters:
|
||||
* The US datacenter runs DTR configured for high availability.
|
||||
* The Asia datacenter runs a DTR cache.
|
||||
* The Europe datacenter runs another DTR cache.
|
||||
|
||||

|
||||
|
||||
Both caches are configured to fetch images from DTR.
|
||||
|
||||
## System requirements
|
||||
|
||||
Before deploying a DTR cache in a datacenter, make sure you:
|
||||
|
||||
* Provision multiple nodes and install Docker on them.
|
||||
* Join the nodes into a Swarm.
|
||||
* Have one or more dedicated worker nodes just for running the DTR cache.
|
||||
* Have TLS certificates to use for securing the cache.
|
||||
* Have a shared storage system, if you want the cache to be highly available.
|
||||
|
||||
If you only plan on running a DTR cache on this datacenter, you just need
|
||||
[Docker EE Basic](https://www.docker.com/pricing), which only includes the
|
||||
Docker Engine.
|
||||
|
||||
If you plan on running other workloads on this datacenter, consider deploying
|
||||
[Docker EE Standard or Advanced](https://www.docker.com/pricing).
|
||||
This way you can enforce fine-grain control over cluster resources, and makes it
|
||||
easier to monitor and manage your applications.
|
||||
|
||||
## Ports used
|
||||
|
||||
You can customize the port used by the DTR cache, so you'll have to configure
|
||||
your firewall rules to make sure users can access the cache using the port
|
||||
you chose.
|
||||
|
||||
By default the documentation guides you in deploying caches that are exposed
|
||||
on port 443/TCP using the swarm routing mesh.
|
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
title: Enable single sign-on
|
||||
description: Learn how to set up single sign-on between UCP and DTR, so that your users only have to authenticate once
|
||||
keywords: dtr, login, sso
|
||||
---
|
||||
|
||||
By default, users are shared between UCP and DTR, but you have to authenticate
|
||||
separately on the web UI of both applications.
|
||||
|
||||
You can configure DTR to have single sign-on (SSO) with UCP, so that users only
|
||||
have to authenticate once.
|
||||
|
||||
## At installation time
|
||||
|
||||
When installing DTR, use the `docker/dtr install --dtr-external-url <url>`
|
||||
option to enable SSO. When accessing the DTR web UI, users are redirected to the
|
||||
UCP login page, and once they are authenticated, they're redirected to the URL
|
||||
you provided to `--dtr-external-url`.
|
||||
|
||||
Use the domain name of DTR, or the domain name of a load balancer, if you're
|
||||
using one, to load-balance requests across multiple DTR replicas.
|
||||
|
||||
## After install
|
||||
|
||||
In your browser, navigate to the DTR web UI, and choose **Settings**. In the
|
||||
**General** tab, scroll to **Domain & proxies**.
|
||||
|
||||
Update the **Load balancer / public address** field to the url where users
|
||||
should be redirected once they are logged in.
|
||||
Use the domain name of DTR, or the domain name of a load balancer, if you're
|
||||
using one, to load-balance requests across multiple DTR replicas.
|
||||
|
||||
Then enable **Use single sign-on**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Once you save, users are redirected to UCP for logging in, and redirected back to
|
||||
DTR once they are authenticated.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Use your own TLS certificates](use-your-own-tls-certificates.md)
|
|
@ -0,0 +1,76 @@
|
|||
---
|
||||
title: Configure DTR image storage
|
||||
description: Storage configuration for Docker Trusted Registry
|
||||
keywords: storage drivers, NFS, Azure, S3
|
||||
---
|
||||
|
||||
By default DTR uses the local filesystem of the node where it is running to
|
||||
store your Docker images. You can configure DTR to use an external storage
|
||||
backend, for improved performance or high availability.
|
||||
|
||||

|
||||
|
||||
If your DTR deployment only has a single replica, you can continue using the
|
||||
local filesystem to store your Docker images. If your DTR deployment has
|
||||
multiple replicas, for high availability, you need to ensure all replicas are
|
||||
using the same storage backend. When a user pulls an image, the node serving
|
||||
the request needs to have access to that image.
|
||||
|
||||
DTR supports these storage systems:
|
||||
|
||||
* Local filesystem
|
||||
* NFS
|
||||
* Amazon S3 or compatible
|
||||
* Google Cloud Storage
|
||||
* Microsoft Azure Blob storage
|
||||
* OpenStack Swift
|
||||
|
||||
To configure the storage backend, you can log into the **DTR web UI**
|
||||
as an administrator user, navigate to the **Settings** page, and choose
|
||||
**Storage**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
The storage configuration page in the DTR web UI has options for the most
|
||||
common configuration options, but you can also upload a yaml configuration file.
|
||||
|
||||
The format of this configuration file is similar to the one used by
|
||||
[Docker Registry](/registry/configuration.md).
|
||||
|
||||
## Local filesystem
|
||||
|
||||
By default, DTR creates a volume named `dtr-registry-<replica-id>` to store
|
||||
your images using the local filesystem. You can customize the name and path of
|
||||
the volume used by DTR, using the `docker/dtr reconfigure --dtr-storage-volume`
|
||||
option.
|
||||
|
||||
If you're deploying DTR with high-availability, you need to use NFS or any other
|
||||
centralized storage backend so that all your DTR replicas have access to the
|
||||
same images.
|
||||
|
||||
To check how much space your images are taking in the local filesystem, you
|
||||
can ssh into the node where DTR is deployed and run:
|
||||
|
||||
```bash
|
||||
{% raw %}
|
||||
# Find the path to the volume
|
||||
docker volume inspect dtr-registry-<replica-id>
|
||||
|
||||
# Check the disk usage
|
||||
sudo du -hs \
|
||||
$(dirname $(docker volume inspect --format '{{.Mountpoint}}' dtr-registry-<dtr-replica>))
|
||||
{% endraw %}
|
||||
```
|
||||
|
||||
## NFS
|
||||
|
||||
You can configure your DTR replicas to store images on an NFS partition, so that
|
||||
all replicas can share the same storage backend.
|
||||
|
||||
[Learn how to configure DTR with NFS](nfs.md).
|
||||
|
||||
|
||||
## Amazon S3
|
||||
|
||||
DTR supports AWS3 or other storage systems that are S3-compatible like Minio.
|
||||
[Learn how to configure DTR with Amazon S3](s3.md).
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
title: Use NFS
|
||||
description: Learn how to integrate Docker Trusted Registry with NFS
|
||||
keywords: registry, dtr, storage, nfs
|
||||
---
|
||||
|
||||
You can configure DTR to store Docker images in an NFS directory.
|
||||
|
||||
Before installing or configuring DTR to use an NFS directory, make sure that:
|
||||
|
||||
* The NFS server has been correctly configured
|
||||
* The NFS server has a fixed IP address
|
||||
* All hosts running DTR have the correct NFS libraries installed
|
||||
|
||||
|
||||
To confirm that the hosts can connect to the NFS server, try to list the
|
||||
directories exported by your NFS server:
|
||||
|
||||
```bash
|
||||
showmount -e <nfsserver>
|
||||
```
|
||||
|
||||
You should also try to mount one of the exported directories:
|
||||
|
||||
```bash
|
||||
mkdir /tmp/mydir && sudo mount -t nfs <nfs server>:<directory> /tmp/mydir
|
||||
```
|
||||
|
||||
## Install DTR with NFS
|
||||
|
||||
One way to configure DTR to use an NFS directory is at install time:
|
||||
|
||||
```bash
|
||||
docker run -it --rm {{ page.dtr_org }}/{{ page.dtr_repo }}:{{ dtr_version }} install \
|
||||
--nfs-storage-url <nfs-storage-url> \
|
||||
<other options>
|
||||
```
|
||||
|
||||
The NFS storage URL should be in the format `nfs://<nfs server>/<directory>`.
|
||||
|
||||
When you join replicas to the DTR cluster, the replicas will pick up that
|
||||
configuration, so you don't need to specify it again.
|
||||
|
||||
### Reconfigure DTR to use NFS
|
||||
|
||||
If you're upgrading from a previous version of DTR and are already using
|
||||
NFS you can continue using the same configurations.
|
||||
|
||||
If you want to start using the new DTR built-in support for NFS you can
|
||||
reconfigure DTR:
|
||||
|
||||
```bash
|
||||
docker run -it --rm {{ page.dtr_org }}/{{ page.dtr_repo }}:{{ dtr_version }} reconfigure \
|
||||
--nfs-storage-url <nfs-storage-url>
|
||||
```
|
||||
|
||||
If you want to reconfigure DTR to stop using NFS storage, leave the option
|
||||
in blank:
|
||||
|
||||
```bash
|
||||
docker run -it --rm {{ page.dtr_org }}/{{ page.dtr_repo }}:{{ dtr_version}} reconfigure \
|
||||
--nfs-storage-url ""
|
||||
```
|
||||
|
||||
If the IP address of your NFS server changes, even if the DNS address is kept
|
||||
the same, you should reconfigure DTR to stop using NFS storage, and then
|
||||
add it back again.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Configure where images are stored](index.md)
|
|
@ -0,0 +1,135 @@
|
|||
---
|
||||
title: Store images on Amazon S3
|
||||
description: Learn how to configure Docker Trusted Registry to store Docker images on
|
||||
Amazon S3
|
||||
keywords: dtr, storage driver, s3
|
||||
---
|
||||
|
||||
You can configure DTR to store Docker images on Amazon S3, or other file servers
|
||||
with an S3-compatible API like Cleversafe or Minio.
|
||||
|
||||
Amazon S3 and compatible services store files in "buckets", and users have
|
||||
permissions to read, write, and delete files from those buckets. When you
|
||||
integrate DTR with Amazon S3, DTR sends all read and write operations to the
|
||||
S3 bucket so that the images are persisted there.
|
||||
|
||||
## Create a bucket on Amazon S3
|
||||
|
||||
Before configuring DTR you need to create a bucket on Amazon S3.
|
||||
To get faster pulls and pushes, you should create the S3 bucket on a region
|
||||
that's physically close to the servers where DTR is running.
|
||||
|
||||
Start by
|
||||
[creating a bucket](http://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html).
|
||||
Then, as a best practice you should
|
||||
[create a new IAM user](http://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)
|
||||
just for the DTR
|
||||
integration and apply an IAM policy that ensures the user has limited permissions.
|
||||
|
||||
This user only needs permissions to access the bucket that you'll use to store
|
||||
images, and be able to read, write, and delete files.
|
||||
|
||||
Here's an example of a policy like that:
|
||||
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Effect": "Allow",
|
||||
"Action": "s3:ListAllMyBuckets",
|
||||
"Resource": "arn:aws:s3:::*"
|
||||
},
|
||||
{
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"s3:ListBucket",
|
||||
"s3:GetBucketLocation",
|
||||
"s3:ListBucketMultipartUploads"
|
||||
],
|
||||
"Resource": "arn:aws:s3:::<bucket-name>"
|
||||
},
|
||||
{
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"s3:PutObject",
|
||||
"s3:GetObject",
|
||||
"s3:DeleteObject",
|
||||
"s3:ListBucketMultipartUploads"
|
||||
],
|
||||
"Resource": "arn:aws:s3:::<bucket-name>/*"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
## Configure DTR
|
||||
|
||||
Once you've created a bucket and user, you can configure DTR to use it.
|
||||
Navigate to the **DTR web UI**, go to **Settings**, and choose **Storage**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Select the **S3** option, and fill-in the information about the bucket and
|
||||
user.
|
||||
|
||||
| Field | Description |
|
||||
|:----------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Root directory | The path in the bucket where images are stored |
|
||||
| AWS Region name | The region where the bucket is. [Learn more](http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) |
|
||||
| S3 bucket name | The name of the bucket to store the images |
|
||||
| AWS access key | The access key to use to access the S3 bucket. This can be left empty if you're using an IAM policy. [Learn more](http://docs.aws.amazon.com/general/latest/gr/managing-aws-access-keys.html) |
|
||||
| AWS secret key | The secret key to use to access the S3 bucket. This can be left empty if you're using an IAM policy |
|
||||
| Region endpoint | The endpoint name for the region you're using. [Learn more](http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) |
|
||||
|
||||
There are also some advanced settings.
|
||||
|
||||
| Field | Description |
|
||||
|:-------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Signature version 4 auth | Authenticate the requests using AWS signature version 4. [Learn more](http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) |
|
||||
| Use HTTPS | Secure all requests with HTTPS, or make requests in an insecure way |
|
||||
| Skip TLS verification | Encrypt all traffic, but don't verify the TLS certificate used by the storage backend |
|
||||
| Root CA certificate | The public key certificate of the root certificate authority that issued the storage backend certificate |
|
||||
|
||||
Once you click **Save**, DTR validates the configurations and saves the changes.
|
||||
|
||||
## Configure your clients
|
||||
|
||||
If you're using a TLS certificate in your storage backend that's not globally
|
||||
trusted, you'll have to configure all Docker Engines that push or pull from DTR
|
||||
to trust that certificate. When you push or pull an image DTR redirects the
|
||||
requests to the storage backend, so if clients don't trust the TLS certificates
|
||||
of both DTR and the storage backend, they won't be able to push or pull images.
|
||||
[Learn how to configure the Docker client](../../../user/access-dtr/index.md).
|
||||
|
||||
And if you've configured DTR to skip TLS verification, you also need to
|
||||
configure all Docker Engines that push or pull from DTR to skip TLS
|
||||
verification. You do this by adding DTR to
|
||||
the [list of insecure registries when starting Docker](/engine/reference/commandline/dockerd.md).
|
||||
|
||||
## Supported regions
|
||||
|
||||
DTR supports the following S3 regions:
|
||||
|
||||
| Region |
|
||||
|:---------------|
|
||||
| us-east-1 |
|
||||
| us-east-2 |
|
||||
| us-west-1 |
|
||||
| us-west-2 |
|
||||
| eu-west-1 |
|
||||
| eu-west-2 |
|
||||
| eu-central-1 |
|
||||
| ap-south-1 |
|
||||
| ap-southeast-1 |
|
||||
| ap-southeast-2 |
|
||||
| ap-northeast-1 |
|
||||
| ap-northeast-2 |
|
||||
| sa-east-1 |
|
||||
| cn-north-1 |
|
||||
| us-gov-west-1 |
|
||||
| ca-central-1 |
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
---
|
||||
title: Garbage collection
|
||||
description: Save disk space by configuring the garbage collection settings in
|
||||
Docker Trusted Registry
|
||||
keywords: registry, garbage collection, gc, space, disk space
|
||||
---
|
||||
|
||||
You can configure Docker Trusted Registry to automatically delete unused image
|
||||
layers, thus saving you disk space. This process is also known as garbage collection.
|
||||
|
||||
## How DTR deletes unused layers
|
||||
|
||||
First you configure DTR to run a garbage collection job on a fixed schedule. At
|
||||
the scheduled time DTR:
|
||||
|
||||
2. Identifies and marks unused image layers.
|
||||
3. Deletes the marked image layers.
|
||||
|
||||
By default, when the garbage collection job starts DTR is put in read-only mode.
|
||||
|
||||
Starting in DTR 2.5, you can configure DTR to run garbage collection jobs
|
||||
without putting DTR in read-only. This feature is still experimental.
|
||||
|
||||
To enable this, navigate to the **DTR web UI**, go to **Settings** and
|
||||
choose **Garbage collection**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Once enabled this setting can't be changed back. The upgrade process might
|
||||
take a while depending on the amount of Docker images that you have stored.
|
||||
|
||||
During this upgrade users can still push and pull images from DTR, but
|
||||
the garbage collection job will be temporarily disabled.
|
||||
|
||||
## Schedule garbage collection
|
||||
|
||||
Navigate to the **Settings** page, and choose **Garbage collection**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Select for how long the garbage collection job should run:
|
||||
* Until done: Run the job until all unused image layers are deleted.
|
||||
* For x minutes: Only run the garbage collection job for a maximum of x minutes
|
||||
at a time.
|
||||
* Never: Never delete unused image layers.
|
||||
|
||||
Once you select for how long to run the garbage collection job, you can
|
||||
configure its schedule (in UTC time) using the cron format.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Once everything is configured you can chose to **Save & start** to immediately
|
||||
run the garbage collection job, or just **Save** to run the job on the next
|
||||
scheduled interval.
|
||||
|
||||
## Stop the garbage collection job
|
||||
|
||||
Once the garbage collection job starts running, a banner is displayed on the
|
||||
web UI explaining that users can't push images. If you're an administrator, you can click the banner to stop the garbage
|
||||
collection job.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
## Under the hood
|
||||
|
||||
Each image stored in DTR is made up of multiple files:
|
||||
|
||||
* A list of image layers that represent the image filesystem.
|
||||
* A configuration file that contains the architecture of the image and other
|
||||
metadata.
|
||||
* A manifest file containing the list of all layers and configuration file for
|
||||
an image.
|
||||
|
||||
All these files are stored in a content-addressable way in which the name of
|
||||
the file is the result of hashing the file's content. This means that if two
|
||||
image tags have exactly the same content, DTR only stores the image content
|
||||
once, even if the tag name is different.
|
||||
|
||||
As an example, if `wordpress:4.8` and `wordpress:latest` have the same content,
|
||||
they will only be stored once. If you delete one of these tags, the other won't
|
||||
be deleted.
|
||||
|
||||
This means that when users delete an image tag, DTR can't delete the underlying
|
||||
files of that image tag since it's possible that there are other tags that
|
||||
also use the same files.
|
||||
|
||||
To delete unused image layers, DTR:
|
||||
1. Becomes read-only to make sure that no one is able to push an image, thus
|
||||
changing the underlying files in the filesystem.
|
||||
2. Check all the manifest files and keep a record of the files that are
|
||||
referenced.
|
||||
3. If a file is never referenced, that means that no image tag uses it, so it
|
||||
can be safely deleted.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Deploy DTR caches](deploy-caches/index.md)
|
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
title: License your installation
|
||||
description: Learn how to license your Docker Trusted Registry installation.
|
||||
keywords: dtr, install, license
|
||||
---
|
||||
|
||||
By default, you don't need to license your Docker Trusted Registry. When
|
||||
installing DTR, it automatically starts using the same license file used on
|
||||
your Docker Universal Control Plane cluster.
|
||||
|
||||
However, there are some situations when you have to manually license your
|
||||
DTR installation:
|
||||
|
||||
* When upgrading to a new major version,
|
||||
* When your current license expires.
|
||||
|
||||
|
||||
## Download your license
|
||||
|
||||
Go to [Docker Store](https://store.docker.com/editions/enterprise/docker-ee-trial)
|
||||
and download your license.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
|
||||
## License your installation
|
||||
|
||||
Once you've downloaded the license file, you can apply it to your DTR
|
||||
installation. Navigate to the **DTR web UI**, and then go to the **Settings
|
||||
page**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Click the **Apply new license** button, and upload your new license file.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Enable single sign-on](enable-single-sign-on.md)
|
|
@ -0,0 +1,92 @@
|
|||
---
|
||||
title: Set up high availability
|
||||
description: Lean how to scale Docker Trusted Registry by adding and removing replicas.
|
||||
keywords: dtr, install, deploy
|
||||
---
|
||||
|
||||
Docker Trusted Registry is designed to scale horizontally as your usage
|
||||
increases. You can add more replicas to make DTR scale to your demand and for
|
||||
high availability.
|
||||
|
||||
All DTR replicas run the same set of services and changes to their configuration
|
||||
are automatically propagated to other replicas.
|
||||
|
||||

|
||||
|
||||
To make DTR tolerant to failures, add additional replicas to the DTR cluster.
|
||||
|
||||
| DTR replicas | Failures tolerated |
|
||||
|:------------:|:------------------:|
|
||||
| 1 | 0 |
|
||||
| 3 | 1 |
|
||||
| 5 | 2 |
|
||||
| 7 | 3 |
|
||||
|
||||
|
||||
When sizing your DTR installation for high-availability,
|
||||
follow these rules of thumb:
|
||||
|
||||
* Don't create a DTR cluster with just two replicas. Your cluster
|
||||
won't tolerate any failures, and it's possible that you experience performance
|
||||
degradation.
|
||||
* When a replica fails, the number of failures tolerated by your cluster
|
||||
decreases. Don't leave that replica offline for long.
|
||||
* Adding too many replicas to the cluster might also lead to performance
|
||||
degradation, as data needs to be replicated across all replicas.
|
||||
|
||||
To have high-availability on UCP and DTR, you need a minimum of:
|
||||
|
||||
* 3 dedicated nodes to install UCP with high availability,
|
||||
* 3 dedicated nodes to install DTR with high availability,
|
||||
* As many nodes as you want for running your containers and applications.
|
||||
|
||||
You also need to configure the DTR replicas to share the
|
||||
[same object storage](external-storage/index.md).
|
||||
|
||||
## Join more DTR replicas
|
||||
|
||||
To add replicas to an existing DTR deployment:
|
||||
|
||||
1. Use ssh to log into any node that is already part of UCP.
|
||||
|
||||
2. Run the DTR join command:
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} join \
|
||||
--ucp-node <ucp-node-name> \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
Where the `--ucp-node` is the hostname of the UCP node where you want to
|
||||
deploy the DTR replica. `--ucp-insecure-tls` tells the command to trust the
|
||||
certificates used by UCP.
|
||||
|
||||
3. If you have a load balancer, add this DTR replica to the load balancing pool.
|
||||
|
||||
## Remove existing replicas
|
||||
|
||||
To remove a DTR replica from your deployment:
|
||||
|
||||
1. Use ssh to log into any node that is part of UCP.
|
||||
2. Run the DTR remove command:
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} remove \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
You will be prompted for:
|
||||
|
||||
* Existing replica id: the id of any healthy DTR replica of that cluster
|
||||
* Replica id: the id of the DTR replica you want to remove. It can be the id of an
|
||||
unhealthy replica
|
||||
* UCP username and password: the administrator credentials for UCP
|
||||
|
||||
If you're load-balancing user requests across multiple DTR replicas, don't
|
||||
forget to remove this replica from the load balancing pool.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Set up vulnerability scans](set-up-vulnerability-scans.md)
|
|
@ -0,0 +1,190 @@
|
|||
---
|
||||
title: Set up Security Scanning in DTR
|
||||
description: Enable and configure Docker Security Scanning for Docker Trusted Registry.
|
||||
keywords: registry, scanning, security scan, vulnerability, CVE
|
||||
---
|
||||
|
||||
This page explains how to set up and enable Docker Security Scanning on an
|
||||
existing installation of Docker Trusted Registry.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
These instructions assume that you have already installed Docker Trusted
|
||||
Registry, and have access to an account on the DTR instance with administrator
|
||||
access.
|
||||
|
||||
Before you begin, make sure that you or your organization has purchased a DTR
|
||||
license that includes Docker Security Scanning, and that your Docker ID can
|
||||
access and download this license from the Docker Store.
|
||||
|
||||
If you are using a license associated with an individual account, no additional
|
||||
action is needed. If you are using a license associated with an organization
|
||||
account, you may need to make sure your Docker ID is a member of the `Owners`
|
||||
team. Only `Owners` team members can download license files for an Organization.
|
||||
|
||||
If you will be allowing the Security Scanning database to update itself
|
||||
automatically, make sure that the server hosting your DTR instance can access
|
||||
`https://dss-cve-updates.docker.com/` on the standard https port 443.
|
||||
|
||||
## Get the security scanning license.
|
||||
|
||||
If your DTR instance already has a license that includes Security Scanning, skip
|
||||
this step and proceed to [enable DTR Security Scanning](#enable-dtr-security-scanning).
|
||||
|
||||
> **Tip**: To check if your existing DTR license includes scanning, navigate
|
||||
> to the DTR **Settings** page, and click **Security**. If an "Enable scanning"
|
||||
> toggle appears, the license includes scanning.
|
||||
|
||||
If your current DTR license doesn't include scanning, you must first download
|
||||
the new license.
|
||||
|
||||
1. Log in to the Docker Store using a Docker ID with access to the license you need.
|
||||
2. In the top right corner, click your user account icon, and select **My Content**.
|
||||
3. Locate **Docker Enterprise Edition** in the content list, and click **Setup**.
|
||||
4. Click **License Key** to download the license.
|
||||
{: .with-border}
|
||||
|
||||
Next, install the new license on the DTR instance.
|
||||
|
||||
7. Log in to your DTR instance using an administrator account.
|
||||
8. Click **Settings** in the left navigation.
|
||||
9. On the **General** tab click **Apply new license**.
|
||||
|
||||
A file browser dialog appears.
|
||||
|
||||
10. Navigate to where you saved the license key (`.lic`) file, select it, and click **Open**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Proceed to [enable DTR Security Scanning](#enable-dtr-security-scanning).
|
||||
|
||||
## Enable DTR security scanning
|
||||
|
||||
To enable security scanning in DTR:
|
||||
|
||||
1. Log in to your DTR instance with an administrator account.
|
||||
2. Click **Settings** in the left navigation.
|
||||
3. Click the **Security** tab.
|
||||
|
||||
> **Note**: If you see a message on this tab telling you to contact your Docker sales representative, then the license installed on this DTR instance does not include Docker Security Scanning. Check that you have purchased Security Scanning, and that the DTR instance is using the latest license file.
|
||||
|
||||
4. Click the **Enable scanning** toggle so that it turns blue and says "on".
|
||||
{: .with-border}
|
||||
5. Next, provide a security database for the scanner. **Security scanning will not function until DTR has a security database to use.**
|
||||
|
||||
By default, security scanning is enabled in **Online** mode. In this mode,
|
||||
DTR attempts to download a security database from a Docker server. If your
|
||||
installation cannot access `https://dss-cve-updates.docker.com/` you must
|
||||
manually upload a `.tar` file containing the security database.
|
||||
|
||||
- If you are using `Online` mode, the DTR instance will contact a Docker server, download the latest vulnerability database, and install it. Scanning can begin once this process completes.<!--(TODO: no completion or confirmation message?) -->
|
||||
- If you are using `Offline` mode, use the instructions in [Update scanning database - offline mode](#update-cve-database---offline-mode) to upload an initial security database.
|
||||
|
||||
By default when Security Scanning is enabled, new repositories will automatically scan on `docker push`. If you had existing repositories before you enabled security scanning, you might want to [change repository scanning behavior](#set-repository-scanning-mode).
|
||||
|
||||
## Set repository scanning mode
|
||||
|
||||
Two modes are available when Security Scanning is enabled:
|
||||
|
||||
- `Scan on push & Scan manually`: the image is re-scanned on each `docker push` to the repository, and whenever a user with `write` access clicks the **Start Scan** links or **Scan** button.
|
||||
- `Scan manually`: the image is scanned only when a user with `write` access clicks the **Start Scan** links or **Scan** button.
|
||||
|
||||
By default, _new_ repositories are set to `Scan on push & Scan manually`, but
|
||||
you can change this setting during repository creation.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Any repositories that existed before scanning was enabled are set to `Scan manually` mode by default. If these repositories are still in use, you can change this setting from each repository's **Settings** page.
|
||||
|
||||
> **Note**: To change an individual repository's scanning mode, you must have
|
||||
`write` or `admin` access to the repo.
|
||||
|
||||
To change an individual repository's scanning mode:
|
||||
|
||||
1. Navigate to the repository, and click the **Settings** tab.
|
||||
2. Scroll down to the **Image scanning** section.
|
||||
3. Select the desired scanning mode.
|
||||
{: .with-border}
|
||||
|
||||
## Update the CVE scanning database
|
||||
|
||||
Docker Security Scanning indexes the components in your DTR images and compares
|
||||
them against a known CVE database. When new vulnerabilities are reported, Docker
|
||||
Security Scanning matches the components in new CVE reports to the indexed
|
||||
components in your images, and quickly generates an updated report.
|
||||
|
||||
Users with administrator access to DTR can check when the CVE database was last updated from the **Security** tab in the DTR **Settings** pages.
|
||||
|
||||
### Update CVE database - online mode
|
||||
|
||||
By default Docker Security Scanning checks automatically for updates to the
|
||||
vulnerability database, and downloads them when available. If your installation
|
||||
does not have access to the public internet, use the [Offline mode instructions below](#update-cve-database-offline-mode).
|
||||
|
||||
To ensure that DTR can access these updates, make sure that the host can reach
|
||||
`https://dss-cve-updates.docker.com/` on port 443 using https.
|
||||
|
||||
DTR checks for new CVE database updates at 3:00 AM UTC every day. If an update
|
||||
is found it is downloaded and applied without interrupting any scans in
|
||||
progress. Once the update is complete, the security scanning system looks for
|
||||
new vulnerabilities in the indexed components.
|
||||
|
||||
To set the update mode to Online:
|
||||
|
||||
1. Log in to DTR as a user with administrator rights.
|
||||
2. Click **Settings** in the left navigation and click **Security**.
|
||||
3. Click **Online**.
|
||||
|
||||
Your choice is saved automatically.
|
||||
|
||||
> **Tip**: DTR also checks for CVE database updates when scanning is first enabled, and when you switch update modes. If you need to check for a CVE database update immediately, you can briefly switch modes from online to offline and back again.
|
||||
|
||||
### Update CVE database - offline mode
|
||||
|
||||
To update the CVE database for your DTR instance when it cannot contact the update server, you download and install a `.tar` file that contains the database updates. To download the file:
|
||||
|
||||
1. Log in to the [Docker Store](https://store.docker.com/).
|
||||
|
||||
If you are a member of an Organization managing licenses using Docker Store,
|
||||
make sure your account is a member of the `Owners` team. Only Owners can
|
||||
view and manage licenses and other entitlements for Organizations from the
|
||||
Docker Store.
|
||||
|
||||
2. In the top right corner, click your user account icon, and select **My Content**.
|
||||
3. If necessary, select an organization account from the **Accounts** menu at the upper right.
|
||||
4. Locate your Docker EE Advanced subscription or trial.
|
||||
5. Click **Setup** button.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
6. Click **Download CVE Vulnerability Database** link to download the database file.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
If you run into problems, contact us at nautilus-feedback@docker.com for the file.
|
||||
|
||||
To manually update the DTR CVE database from a `.tar` file:
|
||||
|
||||
1. Log in to DTR as a user with administrator rights.
|
||||
2. Click **Settings** in the left navigation and click **Security**.
|
||||
4. Click **Upload .tar database file**.
|
||||
5. Browse to the latest `.tar` file that you received, and click **Open**.
|
||||
|
||||
DTR installs the new CVE database, and begins checking already indexed images
|
||||
for components that match new or updated vulnerabilities.
|
||||
|
||||
> **Tip**: The Upload button is unavailable while DTR applies CVE database updates.
|
||||
|
||||
## Enable or disable automatic database updates
|
||||
|
||||
To change the update mode:
|
||||
|
||||
1. Log in to DTR as a user with administrator rights.
|
||||
2. Click **Settings** in the left navigation and click **Security**.
|
||||
3. Click **Online/Offline**.
|
||||
|
||||
Your choice is saved automatically.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Deploy DTR caches](deploy-caches/index.md)
|
|
@ -0,0 +1,280 @@
|
|||
---
|
||||
title: Use a load balancer
|
||||
description: Learn how to configure a load balancer to balance user requests across multiple Docker Trusted Registry replicas.
|
||||
keywords: dtr, load balancer
|
||||
---
|
||||
|
||||
Once you’ve joined multiple DTR replicas nodes for
|
||||
[high-availability](set-up-high-availability.md), you can configure your own
|
||||
load balancer to balance user requests across all replicas.
|
||||
|
||||

|
||||
|
||||
|
||||
This allows users to access DTR using a centralized domain name. If a replica
|
||||
goes down, the load balancer can detect that and stop forwarding requests to
|
||||
it, so that the failure goes unnoticed by users.
|
||||
|
||||
DTR exposes several endpoints you can use to assess if a DTR replica is healthy
|
||||
or not:
|
||||
|
||||
* `/_ping`: Is an unauthenticated endpoint that checks if the DTR replica is
|
||||
healthy. This is useful for load balancing or other automated health check tasks.
|
||||
* `/nginx_status`: Returns the number of connections being handled by the
|
||||
NGINX front-end used by DTR.
|
||||
* `/api/v0/meta/cluster_status`: Returns extensive information about all DTR
|
||||
replicas.
|
||||
|
||||
## Load balance DTR
|
||||
|
||||
DTR does not provide a load balancing service. You can use an on-premises
|
||||
or cloud-based load balancer to balance requests across multiple DTR replicas.
|
||||
|
||||
> Additional load balancer requirements for UCP
|
||||
>
|
||||
> If you are also using UCP, there are [additional requirements](https://docs.docker.com/ee/ucp/admin/configure/join-nodes/use-a-load-balancer/#load-balancing-ucp-and-dtr) if you plan to load balance both UCP and DTR using the same load balancer.
|
||||
>
|
||||
>{: .important}
|
||||
|
||||
You can use the unauthenticated `/_ping` endpoint on each DTR replica,
|
||||
to check if the replica is healthy and if it should remain in the load balancing
|
||||
pool or not.
|
||||
|
||||
Also, make sure you configure your load balancer to:
|
||||
|
||||
* Load balance TCP traffic on ports 80 and 443.
|
||||
* Not terminate HTTPS connections.
|
||||
* Not buffer requests.
|
||||
* Forward the `Host` HTTP header correctly.
|
||||
* Have no timeout for idle connections, or set it to more than 10 minutes.
|
||||
|
||||
The `/_ping` endpoint returns a JSON object for the replica being queried of
|
||||
the form:
|
||||
|
||||
```json
|
||||
{
|
||||
"Error": "error message",
|
||||
"Healthy": true
|
||||
}
|
||||
```
|
||||
|
||||
A response of `"Healthy": true` means the replica is suitable for taking
|
||||
requests. It is also sufficient to check whether the HTTP status code is 200.
|
||||
|
||||
An unhealthy replica will return 503 as the status code and populate `"Error"`
|
||||
with more details on any one of these services:
|
||||
|
||||
* Storage container (registry)
|
||||
* Authorization (garant)
|
||||
* Metadata persistence (rethinkdb)
|
||||
* Content trust (notary)
|
||||
|
||||
Note that this endpoint is for checking the health of a single replica. To get
|
||||
the health of every replica in a cluster, querying each replica individually is
|
||||
the preferred way to do it in real time.
|
||||
|
||||
|
||||
## Configuration examples
|
||||
|
||||
Use the following examples to configure your load balancer for DTR.
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a data-toggle="tab" data-target="#nginx" data-group="nginx">NGINX</a></li>
|
||||
<li><a data-toggle="tab" data-target="#haproxy" data-group="haproxy">HAProxy</a></li>
|
||||
<li><a data-toggle="tab" data-target="#aws">AWS LB</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div id="nginx" class="tab-pane fade in active" markdown="1">
|
||||
```conf
|
||||
user nginx;
|
||||
worker_processes 1;
|
||||
|
||||
error_log /var/log/nginx/error.log warn;
|
||||
pid /var/run/nginx.pid;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
stream {
|
||||
upstream dtr_80 {
|
||||
server <DTR_REPLICA_1_IP>:80 max_fails=2 fail_timeout=30s;
|
||||
server <DTR_REPLICA_2_IP>:80 max_fails=2 fail_timeout=30s;
|
||||
server <DTR_REPLICA_N_IP>:80 max_fails=2 fail_timeout=30s;
|
||||
}
|
||||
upstream dtr_443 {
|
||||
server <DTR_REPLICA_1_IP>:443 max_fails=2 fail_timeout=30s;
|
||||
server <DTR_REPLICA_2_IP>:443 max_fails=2 fail_timeout=30s;
|
||||
server <DTR_REPLICA_N_IP>:443 max_fails=2 fail_timeout=30s;
|
||||
}
|
||||
server {
|
||||
listen 443;
|
||||
proxy_pass dtr_443;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
proxy_pass dtr_80;
|
||||
}
|
||||
}
|
||||
```
|
||||
</div>
|
||||
<div id="haproxy" class="tab-pane fade" markdown="1">
|
||||
```conf
|
||||
global
|
||||
log /dev/log local0
|
||||
log /dev/log local1 notice
|
||||
|
||||
defaults
|
||||
mode tcp
|
||||
option dontlognull
|
||||
timeout connect 5s
|
||||
timeout client 50s
|
||||
timeout server 50s
|
||||
timeout tunnel 1h
|
||||
timeout client-fin 50s
|
||||
### frontends
|
||||
# Optional HAProxy Stats Page accessible at http://<host-ip>:8181/haproxy?stats
|
||||
frontend dtr_stats
|
||||
mode http
|
||||
bind 0.0.0.0:8181
|
||||
default_backend dtr_stats
|
||||
frontend dtr_80
|
||||
mode tcp
|
||||
bind 0.0.0.0:80
|
||||
default_backend dtr_upstream_servers_80
|
||||
frontend dtr_443
|
||||
mode tcp
|
||||
bind 0.0.0.0:443
|
||||
default_backend dtr_upstream_servers_443
|
||||
### backends
|
||||
backend dtr_stats
|
||||
mode http
|
||||
option httplog
|
||||
stats enable
|
||||
stats admin if TRUE
|
||||
stats refresh 5m
|
||||
backend dtr_upstream_servers_80
|
||||
mode tcp
|
||||
option httpchk GET /_ping HTTP/1.1\r\nHost:\ <DTR_FQDN>
|
||||
server node01 <DTR_REPLICA_1_IP>:80 check weight 100
|
||||
server node02 <DTR_REPLICA_2_IP>:80 check weight 100
|
||||
server node03 <DTR_REPLICA_N_IP>:80 check weight 100
|
||||
backend dtr_upstream_servers_443
|
||||
mode tcp
|
||||
option httpchk GET /_ping HTTP/1.1\r\nHost:\ <DTR_FQDN>
|
||||
server node01 <DTR_REPLICA_1_IP>:443 weight 100 check check-ssl verify none
|
||||
server node02 <DTR_REPLICA_2_IP>:443 weight 100 check check-ssl verify none
|
||||
server node03 <DTR_REPLICA_N_IP>:443 weight 100 check check-ssl verify none
|
||||
```
|
||||
</div>
|
||||
<div id="aws" class="tab-pane fade" markdown="1">
|
||||
```json
|
||||
{
|
||||
"Subnets": [
|
||||
"subnet-XXXXXXXX",
|
||||
"subnet-YYYYYYYY",
|
||||
"subnet-ZZZZZZZZ"
|
||||
],
|
||||
"CanonicalHostedZoneNameID": "XXXXXXXXXXX",
|
||||
"CanonicalHostedZoneName": "XXXXXXXXX.us-west-XXX.elb.amazonaws.com",
|
||||
"ListenerDescriptions": [
|
||||
{
|
||||
"Listener": {
|
||||
"InstancePort": 443,
|
||||
"LoadBalancerPort": 443,
|
||||
"Protocol": "TCP",
|
||||
"InstanceProtocol": "TCP"
|
||||
},
|
||||
"PolicyNames": []
|
||||
}
|
||||
],
|
||||
"HealthCheck": {
|
||||
"HealthyThreshold": 2,
|
||||
"Interval": 10,
|
||||
"Target": "HTTPS:443/_ping",
|
||||
"Timeout": 2,
|
||||
"UnhealthyThreshold": 4
|
||||
},
|
||||
"VPCId": "vpc-XXXXXX",
|
||||
"BackendServerDescriptions": [],
|
||||
"Instances": [
|
||||
{
|
||||
"InstanceId": "i-XXXXXXXXX"
|
||||
},
|
||||
{
|
||||
"InstanceId": "i-XXXXXXXXX"
|
||||
},
|
||||
{
|
||||
"InstanceId": "i-XXXXXXXXX"
|
||||
}
|
||||
],
|
||||
"DNSName": "XXXXXXXXXXXX.us-west-2.elb.amazonaws.com",
|
||||
"SecurityGroups": [
|
||||
"sg-XXXXXXXXX"
|
||||
],
|
||||
"Policies": {
|
||||
"LBCookieStickinessPolicies": [],
|
||||
"AppCookieStickinessPolicies": [],
|
||||
"OtherPolicies": []
|
||||
},
|
||||
"LoadBalancerName": "ELB-DTR",
|
||||
"CreatedTime": "2017-02-13T21:40:15.400Z",
|
||||
"AvailabilityZones": [
|
||||
"us-west-2c",
|
||||
"us-west-2a",
|
||||
"us-west-2b"
|
||||
],
|
||||
"Scheme": "internet-facing",
|
||||
"SourceSecurityGroup": {
|
||||
"OwnerAlias": "XXXXXXXXXXXX",
|
||||
"GroupName": "XXXXXXXXXXXX"
|
||||
}
|
||||
}
|
||||
```
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
You can deploy your load balancer using:
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a data-toggle="tab" data-target="#nginx-2" data-group="nginx">NGINX</a></li>
|
||||
<li><a data-toggle="tab" data-target="#haproxy-2" data-group="haproxy">HAProxy</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div id="nginx-2" class="tab-pane fade in active" markdown="1">
|
||||
```conf
|
||||
# Create the nginx.conf file, then
|
||||
# deploy the load balancer
|
||||
|
||||
docker run --detach \
|
||||
--name dtr-lb \
|
||||
--restart=unless-stopped \
|
||||
--publish 80:80 \
|
||||
--publish 443:443 \
|
||||
--volume ${PWD}/nginx.conf:/etc/nginx/nginx.conf:ro \
|
||||
nginx:stable-alpine
|
||||
```
|
||||
</div>
|
||||
<div id="haproxy-2" class="tab-pane fade" markdown="1">
|
||||
```conf
|
||||
# Create the haproxy.cfg file, then
|
||||
# deploy the load balancer
|
||||
|
||||
docker run --detach \
|
||||
--name dtr-lb \
|
||||
--publish 443:443 \
|
||||
--publish 80:80 \
|
||||
--publish 8181:8181 \
|
||||
--restart=unless-stopped \
|
||||
--volume ${PWD}/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro \
|
||||
haproxy:1.7-alpine haproxy -d -f /usr/local/etc/haproxy/haproxy.cfg
|
||||
```
|
||||
</div>
|
||||
</div>
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Backups and disaster recovery](../disaster-recovery/index.md)
|
||||
- [Monitor and troubleshoot](../monitor-and-troubleshoot/index.md)
|
|
@ -0,0 +1,45 @@
|
|||
---
|
||||
title: Use a web proxy
|
||||
description: Learn how to configure Docker Content Trust to use a web proxy to
|
||||
reach external services.
|
||||
keywords: dtr, configure, http, proxy
|
||||
---
|
||||
|
||||
Docker Trusted Registry makes outgoing connections to check for new versions,
|
||||
automatically renew its license, and update its vulnerability database.
|
||||
If DTR can't access the internet, then you'll have to manually apply updates.
|
||||
|
||||
One option to keep your environment secure while still allowing DTR access to
|
||||
the internet is to use a web proxy. If you have an HTTP or HTTPS proxy, you
|
||||
can configure DTR to use it. To avoid downtime you should do this configuration
|
||||
outside business peak hours.
|
||||
|
||||
As an administrator, log into a node where DTR is deployed, and run:
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} reconfigure \
|
||||
--http-proxy http://<domain>:<port> \
|
||||
--https-proxy https://<doman>:<port> \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
To confirm how DTR is configured, check the **Settings** page on the web UI.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
If by chance the web proxy requires authentication you can submit the username
|
||||
and password, in the command, as shown below:
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} reconfigure \
|
||||
--http-proxy username:password@<domain>:<port> \
|
||||
--https-proxy username:password@<doman>:<port> \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
NOTE: DTR will hide the password portion of the URL, when it is displayed in the DTR UI.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Configure garbage collection](garbage-collection.md)
|
|
@ -0,0 +1,44 @@
|
|||
---
|
||||
title: Use your own TLS certificates
|
||||
description: Learn how to configure Docker Trusted Registry with your own TLS certificates.
|
||||
keywords: dtr, tls
|
||||
---
|
||||
|
||||
By default the DTR services are exposed using HTTPS, to ensure all
|
||||
communications between clients and DTR is encrypted. Since DTR
|
||||
replicas use self-signed certificates for this, when a client accesses
|
||||
DTR, their browsers won't trust this certificate, so the browser displays a
|
||||
warning message.
|
||||
|
||||
You can configure DTR to use your own certificates, so that it is automatically
|
||||
trusted by your users' browser and client tools.
|
||||
|
||||
## Replace the server certificates
|
||||
|
||||
To configure DTR to use your own certificates and keys, go to the
|
||||
**DTR web UI**, navigate to the **Settings** page, and scroll down to the
|
||||
**Domain** section.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
|
||||
Set the DTR domain name and upload the certificates and key:
|
||||
|
||||
* Load balancer/public address, is the domain name clients will use to access DTR.
|
||||
* TLS certificate, is the server certificate and any intermediate CA public
|
||||
certificates. This certificate needs to be valid for the DTR public address,
|
||||
and have SANs for all addresses used to reach the DTR replicas, including load
|
||||
balancers.
|
||||
* TLS private key is the server private key.
|
||||
* TLS CA is the root CA public certificate.
|
||||
|
||||
Finally, click **Save** for the changes to take effect.
|
||||
|
||||
If you're using certificates issued by a globally trusted certificate authority,
|
||||
any web browser or client tool should now trust DTR. If you're using an internal
|
||||
certificate authority, you'll need to configure your system to trust that
|
||||
certificate authority.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Set up external storage](external-storage/index.md)
|
|
@ -0,0 +1,151 @@
|
|||
---
|
||||
title: Create a backup
|
||||
description: Learn how to create a backup of Docker Trusted Registry, for disaster recovery.
|
||||
keywords: dtr, disaster recovery
|
||||
---
|
||||
|
||||
{% assign metadata_backup_file = "dtr-metadata-backup.tar" %}
|
||||
{% assign image_backup_file = "dtr-image-backup.tar" %}
|
||||
|
||||
|
||||
## Data managed by DTR
|
||||
|
||||
Docker Trusted Registry maintains data about:
|
||||
|
||||
| Data | Description |
|
||||
|:-----------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Configurations | The DTR cluster configurations |
|
||||
| Repository metadata | The metadata about the repositories and images deployed |
|
||||
| Access control to repos and images | Permissions for teams and repositories |
|
||||
| Notary data | Notary tags and signatures |
|
||||
| Scan results | Security scanning results for images |
|
||||
| Certificates and keys | The certificates, public keys, and private keys that are used for mutual TLS communication |
|
||||
| Images content | The images you push to DTR. This can be stored on the file system of the node running DTR, or other storage system, depending on the configuration |
|
||||
|
||||
This data is persisted on the host running DTR, using named volumes.
|
||||
[Learn more about DTR named volumes](../../architecture.md).
|
||||
|
||||
To perform a backup of a DTR node, run the `docker/dtr backup` command. This
|
||||
command backups up the following data:
|
||||
|
||||
| Data | Backed up | Description |
|
||||
|:-----------------------------------|:----------|:---------------------------------------------------------------|
|
||||
| Configurations | yes | DTR settings |
|
||||
| Repository metadata | yes | Metadata like image architecture and size |
|
||||
| Access control to repos and images | yes | Data about who has access to which images |
|
||||
| Notary data | yes | Signatures and digests for images that are signed |
|
||||
| Scan results | yes | Information about vulnerabilities in your images |
|
||||
| Certificates and keys | yes | TLS certificates and keys used by DTR |
|
||||
| Image content | no | Needs to be backed up separately, depends on DTR configuration |
|
||||
| Users, orgs, teams | no | Create a UCP backup to backup this data |
|
||||
| Vulnerability database | no | Can be re-downloaded after a restore |
|
||||
|
||||
|
||||
## Backup DTR data
|
||||
|
||||
To create a backup of DTR you need to:
|
||||
|
||||
1. Backup image content
|
||||
2. Backup DTR metadata
|
||||
|
||||
You should always create backups from the same DTR replica, to ensure a smoother
|
||||
restore.
|
||||
|
||||
### Backup image content
|
||||
|
||||
Since you can configure the storage backend that DTR uses to store images,
|
||||
the way you backup images depends on the storage backend you're using.
|
||||
|
||||
If you've configured DTR to store images on the local file system or NFS mount,
|
||||
you can backup the images by using ssh to log into a node where DTR is running,
|
||||
and creating a tar archive of the [dtr-registry volume](../../architecture.md):
|
||||
|
||||
{% raw %}
|
||||
```none
|
||||
sudo tar -cf {{ image_backup_file }} \
|
||||
$(dirname $(docker volume inspect --format '{{.Mountpoint}}' dtr-registry-<replica-id>))
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
If you're using a different storage backend, follow the best practices
|
||||
recommended for that system.
|
||||
|
||||
|
||||
### Backup DTR metadata
|
||||
|
||||
To create a DTR backup, load your UCP client bundle, and run the following
|
||||
command, replacing the placeholders for the real values:
|
||||
|
||||
```none
|
||||
read -sp 'ucp password: ' UCP_PASSWORD; \
|
||||
docker run --log-driver none -i --rm \
|
||||
--env UCP_PASSWORD=$UCP_PASSWORD \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} backup \
|
||||
--ucp-url <ucp-url> \
|
||||
--ucp-insecure-tls \
|
||||
--ucp-username <ucp-username> \
|
||||
--existing-replica-id <replica-id> > {{ metadata_backup_file }}
|
||||
```
|
||||
|
||||
Where:
|
||||
|
||||
* `<ucp-url>` is the url you use to access UCP.
|
||||
* `<ucp-username>` is the username of a UCP administrator.
|
||||
* `<replica-id>` is the id of the DTR replica to backup.
|
||||
|
||||
This prompts you for the UCP password, backups up the DTR metadata and saves the
|
||||
result into a tar archive. You can learn more about the supported flags in
|
||||
the [reference documentation](/reference/dtr/2.5/cli/backup.md).
|
||||
|
||||
By default the backup command doesn't stop the DTR replica being backed up.
|
||||
This allows performing backups without affecting your users. Since the replica
|
||||
is not stopped, it's possible that happen while the backup is taking place, won't
|
||||
be persisted.
|
||||
|
||||
You can use the `--offline-backup` option to stop the DTR replica while taking
|
||||
the backup. If you do this, remove the replica from the load balancing pool.
|
||||
|
||||
Also, the backup contains sensitive information
|
||||
like private keys, so you can encrypt the backup by running:
|
||||
|
||||
```none
|
||||
gpg --symmetric {{ metadata_backup_file }}
|
||||
```
|
||||
|
||||
This prompts you for a password to encrypt the backup, copies the backup file
|
||||
and encrypts it.
|
||||
|
||||
### Test your backups
|
||||
|
||||
To validate that the backup was correctly performed, you can print the contents
|
||||
of the tar file created. The backup of the images should look like:
|
||||
|
||||
```none
|
||||
tar -tf {{ metadata_backup_file }}
|
||||
|
||||
dtr-backup-v{{ page.dtr_version }}/
|
||||
dtr-backup-v{{ page.dtr_version }}/rethink/
|
||||
dtr-backup-v{{ page.dtr_version }}/rethink/layers/
|
||||
```
|
||||
|
||||
And the backup of the DTR metadata should look like:
|
||||
|
||||
```none
|
||||
tar -tf {{ metadata_backup_file }}
|
||||
|
||||
# The archive should look like this
|
||||
dtr-backup-v{{ page.dtr_version }}/
|
||||
dtr-backup-v{{ page.dtr_version }}/rethink/
|
||||
dtr-backup-v{{ page.dtr_version }}/rethink/properties/
|
||||
dtr-backup-v{{ page.dtr_version }}/rethink/properties/0
|
||||
```
|
||||
|
||||
If you've encrypted the metadata backup, you can use:
|
||||
|
||||
```none
|
||||
gpg -d {{ metadata_backup_file }} | tar -t
|
||||
```
|
||||
|
||||
You can also create a backup of a UCP cluster and restore it into a new
|
||||
cluster. Then restore DTR on that new cluster to confirm that everything is
|
||||
working as expected.
|
|
@ -0,0 +1,60 @@
|
|||
---
|
||||
title: DTR disaster recovery overview
|
||||
description: Learn the multiple disaster recovery strategies you can use with
|
||||
Docker Trusted Registry.
|
||||
keywords: dtr, disaster recovery
|
||||
---
|
||||
|
||||
Docker Trusted Registry is a clustered application. You can join multiple
|
||||
replicas for high availability.
|
||||
|
||||
For a DTR cluster to be healthy, a majority of its replicas (n/2 + 1) need to
|
||||
be healthy and be able to communicate with the other replicas. This is also
|
||||
known as maintaining quorum.
|
||||
|
||||
This means that there are three failure scenarios possible.
|
||||
|
||||
## Replica is unhealthy but cluster maintains quorum
|
||||
|
||||
One or more replicas are unhealthy, but the overall majority (n/2 + 1) is still
|
||||
healthy and able to communicate with one another.
|
||||
|
||||

|
||||
|
||||
In this example the DTR cluster has five replicas but one of the nodes stopped
|
||||
working, and the other has problems with the DTR overlay network.
|
||||
|
||||
Even though these two replicas are unhealthy the DTR cluster has a majority
|
||||
of replicas still working, which means that the cluster is healthy.
|
||||
|
||||
In this case you should repair the unhealthy replicas, or remove them from
|
||||
the cluster and join new ones.
|
||||
|
||||
[Learn how to repair a replica](repair-a-single-replica.md).
|
||||
|
||||
## The majority of replicas are unhealthy
|
||||
|
||||
A majority of replicas are unhealthy, making the cluster lose quorum, but at
|
||||
least one replica is still healthy, or at least the data volumes for DTR are
|
||||
accessible from that replica.
|
||||
|
||||

|
||||
|
||||
In this example the DTR cluster is unhealthy but since one replica is still
|
||||
running it's possible to repair the cluster without having to restore from
|
||||
a backup. This minimizes the amount of data loss.
|
||||
|
||||
[Learn how to do an emergency repair](repair-a-cluster.md).
|
||||
|
||||
## All replicas are unhealthy
|
||||
|
||||
This is a total disaster scenario where all DTR replicas were lost, causing
|
||||
the data volumes for all DTR replicas to get corrupted or lost.
|
||||
|
||||

|
||||
|
||||
In a disaster scenario like this, you'll have to restore DTR from an existing
|
||||
backup. Restoring from a backup should be only used as a last resort, since
|
||||
doing an emergency repair might prevent some data loss.
|
||||
|
||||
[Learn how to restore from a backup](restore-from-backup.md).
|
|
@ -0,0 +1,81 @@
|
|||
---
|
||||
title: Repair a cluster
|
||||
description: Learn how to repair DTR when the majority of replicas are unhealthy.
|
||||
keywords: dtr, disaster recovery
|
||||
redirect_from:
|
||||
- /datacenter/dtr/2.5/guides/admin/disaster-recovery/repair-a-cluster/
|
||||
---
|
||||
|
||||
For a DTR cluster to be healthy, a majority of its replicas (n/2 + 1) need to
|
||||
be healthy and be able to communicate with the other replicas. This is known
|
||||
as maintaining quorum.
|
||||
|
||||
In a scenario where quorum is lost, but at least one replica is still
|
||||
accessible, you can use that replica to repair the cluster. That replica doesn't
|
||||
need to be completely healthy. The cluster can still be repaired as the DTR
|
||||
data volumes are persisted and accessible.
|
||||
|
||||

|
||||
|
||||
Repairing the cluster from an existing replica minimizes the amount of data lost.
|
||||
If this procedure doesn't work, you'll have to
|
||||
[restore from an existing backup](restore-from-backup.md).
|
||||
|
||||
## Diagnose an unhealthy cluster
|
||||
|
||||
When a majority of replicas are unhealthy, causing the overall DTR cluster to
|
||||
become unhealthy, operations like `docker login`, `docker pull`, and `docker push`
|
||||
present `internal server error`.
|
||||
|
||||
Accessing the `/_ping` endpoint of any replica also returns the same error.
|
||||
It's also possible that the DTR web UI is partially or fully unresponsive.
|
||||
|
||||
## Perform an emergency repair
|
||||
|
||||
Use the `docker/dtr emergency-repair` command to try to repair an unhealthy
|
||||
DTR cluster, from an existing replica.
|
||||
|
||||
This command checks the data volumes for the DTR
|
||||
|
||||
This command checks the data volumes for the DTR replica are uncorrupted,
|
||||
redeploys all internal DTR components and reconfigured them to use the existing
|
||||
volumes.
|
||||
|
||||
It also reconfigures DTR removing all other nodes from the cluster, leaving DTR
|
||||
as a single-replica cluster with the replica you chose.
|
||||
|
||||
Start by finding the ID of the DTR replica that you want to repair from.
|
||||
You can find the list of replicas by navigating to the UCP web UI, or by using
|
||||
a UCP client bundle to run:
|
||||
|
||||
{% raw %}
|
||||
```bash
|
||||
docker ps --format "{{.Names}}" | grep dtr
|
||||
|
||||
# The list of DTR containers with <node>/<component>-<replicaID>, e.g.
|
||||
# node-1/dtr-api-a1640e1c15b6
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
Then, use your UCP client bundle to run the emergency repair command:
|
||||
|
||||
```bash
|
||||
docker run -it --rm {{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} emergency-repair \
|
||||
--ucp-insecure-tls \
|
||||
--existing-replica-id <replica-id>
|
||||
```
|
||||
|
||||
If the emergency repair procedure is successful, your DTR cluster now has a
|
||||
single replica. You should now
|
||||
[join more replicas for high availability](../configure/set-up-high-availability.md).
|
||||
|
||||

|
||||
|
||||
If the emergency repair command fails, try running it again using a different
|
||||
replica ID. As a last resort, you can restore your cluster from an existing
|
||||
backup.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Create a backup](create-a-backup.md)
|
||||
- [Restore from an existing backup](restore-from-backup.md)
|
|
@ -0,0 +1,105 @@
|
|||
---
|
||||
title: Repair a single replica
|
||||
description: Learn how to repair a single DTR replica when it is unhealthy.
|
||||
keywords: dtr, disaster recovery
|
||||
---
|
||||
|
||||
When one or more DTR replicas are unhealthy but the overall majority
|
||||
(n/2 + 1) is healthy and able to communicate with one another, your DTR
|
||||
cluster is still functional and healthy.
|
||||
|
||||

|
||||
|
||||
Given that the DTR cluster is healthy, there's no need to execute any disaster
|
||||
recovery procedures like restoring from a backup.
|
||||
|
||||
Instead, you should:
|
||||
|
||||
1. Remove the unhealthy replicas from the DTR cluster.
|
||||
2. Join new replicas to make DTR highly available.
|
||||
|
||||
Since a DTR cluster requires a majority of replicas to be healthy at all times,
|
||||
the order of these operations is important. If you join more replicas before
|
||||
removing the ones that are unhealthy, your DTR cluster might become unhealthy.
|
||||
|
||||
## Split-brain scenario
|
||||
|
||||
To understand why you should remove unhealthy replicas before joining new ones,
|
||||
imagine you have a five-replica DTR deployment, and something goes wrong with
|
||||
the overlay network connection the replicas, causing them to be separated in
|
||||
two groups.
|
||||
|
||||

|
||||
|
||||
Because the cluster originally had five replicas, it can work as long as
|
||||
three replicas are still healthy and able to communicate (5 / 2 + 1 = 3).
|
||||
Even though the network separated the replicas in two groups, DTR is still
|
||||
healthy.
|
||||
|
||||
If at this point you join a new replica instead of fixing the network problem
|
||||
or removing the two replicas that got isolated from the rest, it's possible
|
||||
that the new replica ends up in the side of the network partition that has
|
||||
less replicas.
|
||||
|
||||

|
||||
|
||||
When this happens, both groups now have the minimum amount of replicas needed
|
||||
to establish a cluster. This is also known as a split-brain scenario, because
|
||||
both groups can now accept writes and their histories start diverging, making
|
||||
the two groups effectively two different clusters.
|
||||
|
||||
## Remove replicas
|
||||
|
||||
To remove unhealthy replicas, you'll first have to find the replica ID
|
||||
of one of the replicas you want to keep, and the replica IDs of the unhealthy
|
||||
replicas you want to remove.
|
||||
|
||||
You can find this in the **Stacks** page of the UCP web UI, or by using the UCP
|
||||
client bundle to run:
|
||||
|
||||
{% raw %}
|
||||
```bash
|
||||
docker ps --format "{{.Names}}" | grep dtr
|
||||
|
||||
# The list of DTR containers with <node>/<component>-<replicaID>, e.g.
|
||||
# node-1/dtr-api-a1640e1c15b6
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
Then use the UCP client bundle to remove the unhealthy replicas:
|
||||
|
||||
```bash
|
||||
docker run -it --rm {{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} remove \
|
||||
--existing-replica-id <healthy-replica-id> \
|
||||
--replica-ids <unhealthy-replica-id> \
|
||||
--ucp-insecure-tls \
|
||||
--ucp-url <ucp-url> \
|
||||
--ucp-username <user> \
|
||||
--ucp-password <password>
|
||||
```
|
||||
|
||||
You can remove more than one replica at the same time, by specifying multiple
|
||||
IDs with a comma.
|
||||
|
||||

|
||||
|
||||
## Join replicas
|
||||
|
||||
Once you've removed the unhealthy nodes from the cluster, you should join new
|
||||
ones to make sure your cluster is highly available.
|
||||
|
||||
Use your UCP client bundle to run the following command which prompts you for
|
||||
the necessary parameters:
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} join \
|
||||
--ucp-node <ucp-node-name> \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
[Learn more about high availability](../configure/set-up-high-availability.md).
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Disaster recovery overview](index.md)
|
|
@ -0,0 +1,92 @@
|
|||
---
|
||||
title: Restore from a backup
|
||||
description: Learn how to restore a DTR cluster from an existing backup
|
||||
keywords: dtr, disaster recovery
|
||||
---
|
||||
|
||||
{% assign metadata_backup_file = "dtr-metadata-backup.tar" %}
|
||||
{% assign image_backup_file = "dtr-image-backup.tar" %}
|
||||
|
||||
## Restore DTR data
|
||||
|
||||
If your DTR has a majority of unhealthy replicas, the one way to restore it to
|
||||
a working state is by restoring from an existing backup.
|
||||
|
||||
To restore DTR, you need to:
|
||||
|
||||
1. Stop any DTR containers that might be running
|
||||
2. Restore the images from a backup
|
||||
3. Restore DTR metadata from a backup
|
||||
4. Re-fetch the vulnerability database
|
||||
|
||||
You need to restore DTR on the same UCP cluster where you've created the
|
||||
backup. If you restore on a different UCP cluster, all DTR resources will be
|
||||
owned by users that don't exist, so you'll not be able to manage the resources,
|
||||
even though they're stored in the DTR data store.
|
||||
|
||||
When restoring, you need to use the same version of the `docker/dtr` image
|
||||
that you've used when creating the update. Other versions are not guaranteed
|
||||
to work.
|
||||
|
||||
### Remove DTR containers
|
||||
|
||||
Start by removing any DTR container that is still running:
|
||||
|
||||
```none
|
||||
docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} destroy \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
### Restore images
|
||||
|
||||
If you had DTR configured to store images on the local filesystem, you can
|
||||
extract your backup:
|
||||
|
||||
```none
|
||||
sudo tar -xf {{ image_backup_file }} -C /var/lib/docker/volumes
|
||||
```
|
||||
|
||||
If you're using a different storage backend, follow the best practices
|
||||
recommended for that system.
|
||||
|
||||
### Restore DTR metadata
|
||||
|
||||
You can restore the DTR metadata with the `docker/dtr restore` command. This
|
||||
performs a fresh installation of DTR, and reconfigures it with
|
||||
the configuration created during a backup.
|
||||
|
||||
Load your UCP client bundle, and run the following command, replacing the
|
||||
placeholders for the real values:
|
||||
|
||||
```none
|
||||
read -sp 'ucp password: ' UCP_PASSWORD; \
|
||||
docker run -i --rm \
|
||||
--env UCP_PASSWORD=$UCP_PASSWORD \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} restore \
|
||||
--ucp-url <ucp-url> \
|
||||
--ucp-insecure-tls \
|
||||
--ucp-username <ucp-username> \
|
||||
--ucp-node <hostname> \
|
||||
--replica-id <replica-id> \
|
||||
--dtr-external-url <dtr-external-url> < {{ metadata_backup_file }}
|
||||
```
|
||||
|
||||
Where:
|
||||
|
||||
* `<ucp-url>` is the url you use to access UCP
|
||||
* `<ucp-username>` is the username of a UCP administrator
|
||||
* `<hostname>` is the hostname of the node where you've restored the images
|
||||
* `<replica-id>` the id of the replica you backed up
|
||||
* `<dtr-external-url>`the url that clients use to access DTR
|
||||
|
||||
If you're using NFS as a storage backend, also include `--nfs-storage-url` as
|
||||
part of your restore command, otherwise DTR is restored but starts using a
|
||||
local volume to persist your Docker images.
|
||||
|
||||
### Re-fetch the vulnerability database
|
||||
|
||||
If you're scanning images, you now need to download the vulnerability database.
|
||||
|
||||
After you successfully restore DTR, you can join new replicas the same way you
|
||||
would after a fresh installation. [Learn more](../configure/set-up-vulnerability-scans.md).
|
|
@ -0,0 +1,142 @@
|
|||
---
|
||||
title: Install Docker Trusted Registry
|
||||
description: Learn how to install Docker Trusted Registry for production.
|
||||
keywords: dtr, registry, install
|
||||
redirect_from:
|
||||
- /datacenter/dtr/2.3/guides/admin/install/
|
||||
- /datacenter/dtr/2.5/guides/admin/install/
|
||||
---
|
||||
|
||||
Docker Trusted Registry (DTR) is a containerized application that runs on a
|
||||
swarm managed by Docker Universal Control Plane (UCP). It can be installed
|
||||
on-premises or on a cloud infrastructure.
|
||||
|
||||
Use these instructions to install DTR.
|
||||
|
||||
## Step 1. Validate the system requirements
|
||||
|
||||
The first step in installing DTR, is ensuring your
|
||||
infrastructure has all the [requirements DTR needs to run](system-requirements.md).
|
||||
|
||||
## Step 2. Install UCP
|
||||
|
||||
Since DTR requires Docker Universal Control Plane (UCP)
|
||||
to run, you need to install UCP on all the nodes where you plan to install DTR.
|
||||
[Learn how to install UCP](/datacenter/ucp/2.2/guides/admin/install.md).
|
||||
|
||||
DTR needs to be installed on a worker node that is being managed by UCP.
|
||||
You can't install DTR on a standalone Docker Engine.
|
||||
|
||||

|
||||
|
||||
|
||||
## Step 3. Install DTR
|
||||
|
||||
Once UCP is installed, navigate to the **UCP web UI**. In the **Admin Settings**,
|
||||
choose **Docker Trusted Registry**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
After you configure all the options, you'll have a snippet that you can use
|
||||
to deploy DTR. It should look like this:
|
||||
|
||||
```bash
|
||||
# Pull the latest version of DTR
|
||||
$ docker pull {{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }}
|
||||
|
||||
# Install DTR
|
||||
$ docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} install \
|
||||
--ucp-node <ucp-node-name> \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
You can run that snippet on any node where Docker is installed. As an example
|
||||
you can SSH into a UCP node and run the DTR installer from there. By default
|
||||
the installer runs in interactive mode and prompts you for any additional
|
||||
information that is necessary.
|
||||
[Learn more about the installer](/reference/dtr/2.5/cli/install.md).
|
||||
|
||||
By default DTR is deployed with self-signed certificates, so your UCP deployment
|
||||
might not be able to pull images from DTR.
|
||||
Use the `--dtr-external-url <dtr-domain>:<port>` optional flag while deploying
|
||||
DTR, so that UCP is automatically reconfigured to trust DTR.
|
||||
|
||||
## Step 4. Check that DTR is running
|
||||
|
||||
In your browser, navigate to the Docker **Universal Control Plane**
|
||||
web UI, and navigate to the **Applications** screen. DTR should be listed
|
||||
as an application.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
You can also access the **DTR web UI**, to make sure it is working. In your
|
||||
browser, navigate to the address where you installed DTR.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
|
||||
## Step 5. Configure DTR
|
||||
|
||||
After installing DTR, you should configure:
|
||||
|
||||
* The certificates used for TLS communication. [Learn more](../configure/use-your-own-tls-certificates.md).
|
||||
* The storage backend to store the Docker images. [Lean more](../configure/external-storage/index.md).
|
||||
|
||||
To perform these configurations, navigate to the **Settings** page of DTR.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
|
||||
## Step 6. Test pushing and pulling
|
||||
|
||||
Now that you have a working installation of DTR, you should test that you can
|
||||
push and pull images to it:
|
||||
|
||||
* [Configure your local Docker Engine](../../user/access-dtr/index.md)
|
||||
* [Create a repository](../../user/manage-images/index.md)
|
||||
* [Push and pull images](../../user/manage-images/pull-and-push-images.md)
|
||||
|
||||
## Step 7. Join replicas to the cluster
|
||||
|
||||
This step is optional.
|
||||
|
||||
To set up DTR for high availability,
|
||||
you can add more replicas to your DTR cluster. Adding more replicas allows you
|
||||
to load-balance requests across all replicas, and keep DTR working if a
|
||||
replica fails.
|
||||
|
||||
For high-availability you should set 3, 5, or 7 DTR replicas. The nodes where
|
||||
you're going to install these replicas also need to be managed by UCP.
|
||||
|
||||
To add replicas to a DTR cluster, use the `docker/dtr join` command:
|
||||
|
||||
1. Load your UCP user bundle.
|
||||
|
||||
2. Run the join command.
|
||||
|
||||
When you join a replica to a DTR cluster, you need to specify the
|
||||
ID of a replica that is already part of the cluster. You can find an
|
||||
existing replica ID by going to the **Applications** page on UCP.
|
||||
|
||||
Then run:
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} join \
|
||||
--ucp-node <ucp-node-name> \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
3. Check that all replicas are running.
|
||||
|
||||
In your browser, navigate to the Docker **Universal Control Plane**
|
||||
web UI, and navigate to the **Applications** screen. All replicas should
|
||||
be displayed.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Install DTR offline](install-offline.md)
|
||||
- [Upgrade DTR](../upgrade.md)
|
|
@ -0,0 +1,70 @@
|
|||
---
|
||||
title: Install Docker Trusted Registry offline
|
||||
description: Learn how to install Docker Trusted Registry on a machine with no internet
|
||||
access.
|
||||
keywords: registry, install, offline
|
||||
---
|
||||
|
||||
The procedure to install Docker Trusted Registry on a host is the same,
|
||||
whether that host has access to the internet or not.
|
||||
|
||||
The only difference when installing on an offline host,
|
||||
is that instead of pulling the UCP images from Docker Hub, you use a
|
||||
computer that is connected to the internet to download a single package with
|
||||
all the images. Then you copy that package to the host where you’ll install DTR.
|
||||
|
||||
## Versions available
|
||||
|
||||
{% include components/ddc_url_list_2.html product="dtr" version="2.5" %}
|
||||
|
||||
## Download the offline package
|
||||
|
||||
Use a computer with internet access to download a package with all DTR images:
|
||||
|
||||
```bash
|
||||
$ wget <package-url> -O dtr.tar.gz
|
||||
```
|
||||
|
||||
Now that you have the package in your local machine, you can transfer it to
|
||||
the machines where you want to install DTR.
|
||||
|
||||
For each machine where you want to install DTR:
|
||||
|
||||
1. Copy the DTR package to that machine.
|
||||
|
||||
```bash
|
||||
$ scp dtr.tar.gz <user>@<host>
|
||||
```
|
||||
|
||||
2. Use ssh to log into the hosts where you transferred the package.
|
||||
|
||||
3. Load the DTR images.
|
||||
|
||||
Once the package is transferred to the hosts, you can use the
|
||||
`docker load` command to load the Docker images from the tar archive:
|
||||
|
||||
```bash
|
||||
$ docker load < dtr.tar.gz
|
||||
```
|
||||
|
||||
## Install DTR
|
||||
|
||||
Now that the offline hosts have all the images needed to install DTR,
|
||||
you can [install DTR on that host](index.md).
|
||||
|
||||
### Preventing outgoing connections
|
||||
|
||||
DTR makes outgoing connections to:
|
||||
|
||||
* report analytics,
|
||||
* check for new versions,
|
||||
* check online licenses,
|
||||
* update the vulnerability scanning database
|
||||
|
||||
All of these uses of online connections are optional. You can choose to
|
||||
disable or not use any or all of these features on the admin settings page.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [DTR architecture](../../architecture.md)
|
||||
- [Install DTR](index.md)
|
|
@ -0,0 +1,58 @@
|
|||
---
|
||||
title: Docker Trusted Registry system requirements
|
||||
description: Learn about the system requirements for installing Docker Trusted Registry.
|
||||
keywords: DTR, architecture, requirements
|
||||
---
|
||||
|
||||
Docker Trusted Registry can be installed on-premises or on the cloud.
|
||||
Before installing, be sure your infrastructure has these requirements.
|
||||
|
||||
## Hardware and Software requirements
|
||||
|
||||
You can install DTR on-premises or on a cloud provider. To install DTR,
|
||||
all nodes must:
|
||||
* Be a worker node managed by Universal Control Plane.
|
||||
* Have a fixed hostname.
|
||||
|
||||
### Minimum requirements
|
||||
|
||||
* 8GB of RAM for nodes running DTR
|
||||
* 2 vCPUs for nodes running DTR
|
||||
* 10GB of free disk space
|
||||
|
||||
### Recommended production requirements
|
||||
|
||||
* 16GB of RAM for nodes running DTR
|
||||
* 4 vCPUs for nodes running DTR
|
||||
* 25-100GB of free disk space
|
||||
|
||||
Note that Windows container images are typically larger than Linux ones and for
|
||||
this reason, you should consider provisioning more local storage for Windows
|
||||
nodes and for DTR setups that will store Windows container images.
|
||||
|
||||
## Ports used
|
||||
|
||||
When installing DTR on a node, make sure the following ports are open on that
|
||||
node:
|
||||
|
||||
| Direction | Port | Purpose |
|
||||
|:---------:|:--------|:--------------------------------------|
|
||||
| in | 80/tcp | Web app and API client access to DTR. |
|
||||
| in | 443/tcp | Web app and API client access to DTR. |
|
||||
|
||||
These ports are configurable when installing DTR.
|
||||
|
||||
## Compatibility and maintenance lifecycle
|
||||
|
||||
Docker Enterprise Edition is a software subscription that includes three products:
|
||||
|
||||
* Docker Engine EE,
|
||||
* Docker Trusted Registry,
|
||||
* Docker Universal Control Plane.
|
||||
|
||||
[Learn more about the maintenance lifecycle for these products](https://success.docker.com/article/Compatibility_Matrix).
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [DTR architecture](../../architecture.md)
|
||||
- [Install DTR](index.md)
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
title: Uninstall Docker Trusted Registry
|
||||
description: Learn how to uninstall your Docker Trusted Registry installation.
|
||||
keywords: dtr, install, uninstall
|
||||
---
|
||||
|
||||
Uninstalling DTR can be done by simply removing all data associated with each
|
||||
replica. To do that, you just run the destroy command once per replica:
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
docker/dtr:{{ page.dtr_version }} destroy \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
You will be prompted for the UCP URL, UCP credentials, and which replica to
|
||||
destroy.
|
||||
|
||||
To see what options are available in the destroy command, check the
|
||||
[destroy command reference documentation](/reference/dtr/2.5/cli/destroy.md).
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Scale your deployment](../configure/set-up-high-availability.md)
|
||||
- [Install DTR](index.md)
|
|
@ -0,0 +1,47 @@
|
|||
---
|
||||
title: Create and manage organizations
|
||||
description: Learn how to set up organizations to enforce security in Docker Trusted
|
||||
Registry.
|
||||
keywords: registry, security, permissions, organizations
|
||||
---
|
||||
|
||||
When a user creates a repository, only that user has permissions to make changes
|
||||
to the repository.
|
||||
|
||||
For team workflows, where multiple users have permissions to manage a set of
|
||||
common repositories, create an organization. By default, DTR has one
|
||||
organization called 'docker-datacenter', that is shared between DTR and UCP.
|
||||
|
||||
To create a new organization, navigate to the **DTR web UI**, and go to the
|
||||
**Organizations** page.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Click the **New organization** button, and choose a meaningful name for the
|
||||
organization.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Repositories owned by this organization will contain the organization name, so
|
||||
to pull an image from that repository, you'll use:
|
||||
|
||||
```bash
|
||||
docker pull <dtr-domain-name>/<organization>/<repository>:<tag>
|
||||
```
|
||||
|
||||
Click **Save** to create the organization, and then **click the organization**
|
||||
to define which users are allowed to manage this
|
||||
organization. These users will be able to edit the organization settings, edit
|
||||
all repositories owned by the organization, and define the user permissions for
|
||||
this organization.
|
||||
|
||||
For this, click the **Add user** button, **select the users** that you want to
|
||||
grant permissions to manage the organization, and click
|
||||
**Save**. Then change their permissions from 'Member' to **Org Owner**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Create and manage users](create-and-manage-users.md)
|
||||
- [Create and manage teams](create-and-manage-teams.md)
|
|
@ -0,0 +1,62 @@
|
|||
---
|
||||
title: Create and manage teams in DTR
|
||||
description: Learn how to manage teams to enforce fine-grain access control in Docker
|
||||
Trusted Registry.
|
||||
keywords: registry, security, permissions, teams
|
||||
---
|
||||
|
||||
You can extend a user's default permissions by granting them individual
|
||||
permissions in other image repositories, by adding the user to a team. A team
|
||||
defines the permissions a set of users have for a set of repositories.
|
||||
|
||||
To create a new team, go to the **DTR web UI**, and navigate to the
|
||||
**Organizations** page.
|
||||
Then **click the organization** where you want to create the team. In this
|
||||
example, we'll create the 'billing' team under the 'whale' organization.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Click '**+**' to create a new team, and give it a name.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
## Add users to a team
|
||||
|
||||
Once you have created a team, **click the team** name, to manage its settings.
|
||||
The first thing we need to do is add users to the team. Click the **Add user**
|
||||
button and add users to the team.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
## Manage team permissions
|
||||
|
||||
The next step is to define the permissions this team has for a set of
|
||||
repositories. Navigate to the **Repositories** tab, and click the
|
||||
**Add repository** button.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Choose the repositories this team has access to, and what permission levels the
|
||||
team members have.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
There are three permission levels available:
|
||||
|
||||
| Permission level | Description |
|
||||
|:-----------------|:-----------------------------------------------------------------|
|
||||
| Read only | View repository and pull images. |
|
||||
| Read & Write | View repository, pull and push images. |
|
||||
| Admin | Manage repository and change its settings, pull and push images. |
|
||||
|
||||
## Delete a team
|
||||
|
||||
If you're an organization owner, you can delete a team in that organization.
|
||||
Navigate to the **Team**, choose the **Settings** tab, and click **Delete**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Create and manage users](create-and-manage-users.md)
|
||||
- [Permission levels](permission-levels.md)
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
title: Create and manage users in DTR
|
||||
description: Learn how to manage user permissions in Docker Trusted Registry.
|
||||
keywords: registry, security, permissions, users
|
||||
---
|
||||
|
||||
When using the built-in authentication, you can create users
|
||||
to grant them fine-grained permissions.
|
||||
|
||||
Users are shared across UCP and DTR. When you create a new user in
|
||||
Docker Universal Control Plane, that user becomes available in DTR and vice
|
||||
versa.
|
||||
|
||||
To create a new user, go to the **DTR web UI**, and navigate to the **Users**
|
||||
page.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Click the **New user** button, and fill-in the user information.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Check the **Trusted Registry admin** option, if you want to grant permissions
|
||||
for the user to be a UCP and DTR administrator.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Authentication and authorization](index.md)
|
||||
- [Create and manage teams](create-and-manage-teams.md)
|
|
@ -0,0 +1,56 @@
|
|||
---
|
||||
title: Authentication and authorization in DTR
|
||||
description: Learn about the permission levels available on Docker Trusted Registry.
|
||||
keywords: registry, security, permissions, users
|
||||
---
|
||||
|
||||
With DTR you get to control which users have access to your image repositories.
|
||||
|
||||
By default, anonymous users can only pull images from public repositories.
|
||||
They can't create new repositories or push to existing ones.
|
||||
You can then grant permissions to enforce fine-grained access control to image
|
||||
repositories. For that:
|
||||
|
||||
* Start by creating a user.
|
||||
|
||||
Users are shared across UCP and DTR. When you create a new user in
|
||||
Docker Universal Control Plane, that user becomes available in DTR and vice
|
||||
versa. Registered users can create and manage their own repositories.
|
||||
|
||||
You can also integrate with an LDAP service to manage users from a single
|
||||
place.
|
||||
|
||||
* Extend the permissions by adding the user to a team.
|
||||
|
||||
To extend a user's permission and manage their permissions over repositories,
|
||||
you add the user to a team.
|
||||
A team defines the permissions users have for a set of repositories.
|
||||
|
||||
|
||||
## Organizations and teams
|
||||
|
||||
When a user creates a repository, only that user can make changes to the
|
||||
repository settings, and push new images to it.
|
||||
|
||||
Organizations take permission management one step further, since they allow
|
||||
multiple users to own and manage a common set of repositories. This
|
||||
is useful when implementing team workflows. With organizations you can
|
||||
delegate the management of a set of repositories and user permissions to the
|
||||
organization administrators.
|
||||
|
||||
An organization owns a set of repositories, and defines a set of teams. With
|
||||
teams you can define fine-grain permissions that a team of
|
||||
user has for a set of repositories.
|
||||
|
||||

|
||||
|
||||
In this example, the 'Whale' organization has three repositories and two teams:
|
||||
|
||||
* Members of the blog team can only see and pull images from the whale/java
|
||||
repository,
|
||||
* Members of the billing team can manage the whale/golang repository, and push
|
||||
and pull images from the whale/java repository.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Create and manage users](create-and-manage-users.md)
|
|
@ -0,0 +1,52 @@
|
|||
---
|
||||
title: Permission levels in DTR
|
||||
description: Learn about the permission levels available in Docker Trusted Registry.
|
||||
keywords: registry, security, permissions
|
||||
---
|
||||
|
||||
Docker Trusted Registry allows you to define fine-grain permissions over image
|
||||
repositories.
|
||||
|
||||
## Administrator users
|
||||
|
||||
Users are shared across UCP and DTR. When you create a new user in Docker
|
||||
Universal Control Plane, that user becomes available in DTR and vice versa.
|
||||
When you create an administrator user in DTR, the user has permissions to:
|
||||
|
||||
* Manage users across UCP and DTR,
|
||||
* Manage DTR repositories and settings,
|
||||
* Manage UCP resources and settings.
|
||||
|
||||
## Team permission levels
|
||||
|
||||
Teams allow you to define the permissions a set of user has for a set of
|
||||
repositories. Three permission levels are available:
|
||||
|
||||
| Repository operation | read | read-write | admin |
|
||||
|:----------------------|:----:|:----------:|:-----:|
|
||||
| View/ browse | x | x | x |
|
||||
| Pull | x | x | x |
|
||||
| Push | | x | x |
|
||||
| Start a scan | | x | x |
|
||||
| Delete tags | | x | x |
|
||||
| Edit description | | | x |
|
||||
| Set public or private | | | x |
|
||||
| Manage user access | | | x |
|
||||
| Delete repository | | | x |
|
||||
|
||||
Team permissions are additive. When a user is a member of multiple teams, they
|
||||
have the highest permission level defined by those teams.
|
||||
|
||||
## Overall permissions
|
||||
|
||||
Here's an overview of the permission levels available in DTR:
|
||||
|
||||
* Anonymous users: Can search and pull public repositories.
|
||||
* Users: Can search and pull public repos, and create and manage their own repositories.
|
||||
* Team member: Everything a user can do, plus the permissions granted by the teams the user is member of.
|
||||
* Organization owner: Can manage repositories and teams for the organization.
|
||||
* Admin: Can manage anything across UCP and DTR.
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Authentication and authorization](index.md)
|
|
@ -0,0 +1,75 @@
|
|||
---
|
||||
title: Monitor Docker Trusted Registry
|
||||
description: Learn how to monitor your DTR installation.
|
||||
keywords: registry, monitor, troubleshoot
|
||||
---
|
||||
|
||||
Docker Trusted Registry is a Dockerized application. To monitor it, you can
|
||||
use the same tools and techniques you're already using to monitor other
|
||||
containerized applications running on your cluster. One way to monitor
|
||||
DTR is using the monitoring capabilities of Docker Universal Control Plane.
|
||||
|
||||
In your browser, log in to **Docker Universal Control Plane** (UCP), and
|
||||
navigate to the **Stacks** page.
|
||||
If you have DTR set up for high-availability, then all the DTR replicas are
|
||||
displayed.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
To check the containers for the DTR replica, **click the replica** you want
|
||||
to inspect, click **Inspect Resource**, and choose **Containers**.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
Now you can drill into each DTR container to see its logs and find the root
|
||||
cause of the problem.
|
||||
|
||||
{: .with-border}
|
||||
|
||||
## Health check endpoints
|
||||
|
||||
DTR also exposes several endpoints you can use to assess if a DTR replica
|
||||
is healthy or not:
|
||||
|
||||
* `/_ping`: Checks if the DTR replica is healthy, and
|
||||
returns a simple json response. This is useful for load balancing or other
|
||||
automated health check tasks.
|
||||
* `/nginx_status`: Returns the number of connections being handled by the
|
||||
NGINX front-end used by DTR.
|
||||
* `/api/v0/meta/cluster_status`: Returns extensive information about all DTR
|
||||
replicas.
|
||||
|
||||
## Cluster status
|
||||
|
||||
The `/api/v0/meta/cluster_status` [endpoint](/reference/dtr/2.5/api/)
|
||||
requires administrator credentials, and returns a JSON object for the entire
|
||||
cluster as observed by the replica being queried. You can authenticate your
|
||||
requests using HTTP basic auth.
|
||||
|
||||
```bash
|
||||
curl -ksL -u <user>:<pass> https://<dtr-domain>/api/v0/meta/cluster_status
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"current_issues": [
|
||||
{
|
||||
"critical": false,
|
||||
"description": "... some replicas are not ready. The following servers are
|
||||
not reachable: dtr_rethinkdb_f2277ad178f7",
|
||||
}],
|
||||
"replica_health": {
|
||||
"f2277ad178f7": "OK",
|
||||
"f3712d9c419a": "OK",
|
||||
"f58cf364e3df": "OK"
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
You can find health status on the `current_issues` and `replica_health` arrays.
|
||||
If this endpoint doesn't provide meaningful information when trying to
|
||||
troubleshoot, try [troubleshooting using logs](troubleshoot-with-logs.md).
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Troubleshoot with logs](troubleshoot-with-logs.md)
|
|
@ -0,0 +1,267 @@
|
|||
---
|
||||
title: Check Notary audit logs
|
||||
description: When you push signed images, Docker Trusted Registry keeps audit
|
||||
logs for the changes made to the image metadata. Learn how to view these logs.
|
||||
keywords: registry, monitor, troubleshoot
|
||||
---
|
||||
|
||||
Docker Content Trust (DCT) keeps audit logs of changes made to trusted repositories.
|
||||
Every time you push a signed image to a repository, or delete trust data for a
|
||||
repository, DCT logs that information.
|
||||
|
||||
These logs are only available from the DTR API.
|
||||
|
||||
## Get an authentication token
|
||||
|
||||
To access the audit logs you need to authenticate your requests using an
|
||||
authentication token. You can get an authentication token for all repositories,
|
||||
or one that is specific to a single repository.
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a data-toggle="tab" data-target="#tab1">Global</a></li>
|
||||
<li><a data-toggle="tab" data-target="#tab2">Repository-specific</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div id="tab1" class="tab-pane fade in active" markdown="1">
|
||||
|
||||
```bash
|
||||
curl --insecure --silent \
|
||||
--user <user>:<password> \
|
||||
"https://<dtr-url>/auth/token?realm=dtr&service=dtr&scope=registry:catalog:*"
|
||||
```
|
||||
|
||||
<hr></div>
|
||||
<div id="tab2" class="tab-pane fade" markdown="1">
|
||||
|
||||
```bash
|
||||
curl --insecure --silent \
|
||||
--user <user>:<password> \
|
||||
"https://<dtr-url>/auth/token?realm=dtr&service=dtr&scope=repository:<dtr-url>/<repository>:pull"
|
||||
```
|
||||
|
||||
<hr></div>
|
||||
</div>
|
||||
|
||||
DTR returns a JSON file with a token, even when the user doesn't have access
|
||||
to the repository to which they requested the authentication token. This token
|
||||
doesn't grant access to DTR repositories.
|
||||
|
||||
The JSON file returned has the following structure:
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"token": "<token>",
|
||||
"access_token": "<token>",
|
||||
"expires_in": "<expiration in seconds>",
|
||||
"issued_at": "<time>"
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more about the authentication API](/registry/spec/auth/token/).
|
||||
|
||||
## Changefeed API
|
||||
|
||||
Once you have an authentication token you can use the following endpoints to
|
||||
get audit logs:
|
||||
|
||||
| URL | Description | Authorization |
|
||||
|:---------------------------------------------------|:------------------------------------------|:--------------------------|
|
||||
| `GET /v2/_trust/changefeed` | Get audit logs for all repositories. | Global scope token |
|
||||
| `GET /v2/<dtr-url>/<repository>/_trust/changefeed` | Get audit logs for a specific repository. | Repository-specific token |
|
||||
|
||||
Both endpoints have the following query string parameters:
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Field name</th>
|
||||
<th>Required</th>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>change_id</code></td>
|
||||
<td>Yes</td>
|
||||
<td>String</td>
|
||||
<td>
|
||||
<p>A non-inclusive starting change ID from which to start returning results. This will
|
||||
typically be the first or last change ID from the previous page of records
|
||||
requested, depending on which direction your are paging in.</p>
|
||||
<p>The value <code>0</code> indicates records should be returned starting from the beginning
|
||||
of time.</p>
|
||||
<p>The value <code>1</code> indicates records should be returned starting from the most
|
||||
recent record. If <code>1</code> is provided, the implementation will also assume the
|
||||
records value is meant to be negative, regardless of the given sign.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>records</code></td>
|
||||
<td>Yes</td>
|
||||
<td>Signed integer</td>
|
||||
<td>
|
||||
<p>The number of records to return. A negative value indicates the number
|
||||
of records preceding the <code>change_id</code> should be returned.
|
||||
Records are always returned sorted from oldest to newest. </p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
### Response
|
||||
|
||||
The response is a JSON like:
|
||||
|
||||
```json
|
||||
{
|
||||
"count": 1,
|
||||
"records": [
|
||||
{
|
||||
"ID": "0a60ec31-d2aa-4565-9b74-4171a5083bef",
|
||||
"CreatedAt": "2017-11-06T18:45:58.428Z",
|
||||
"GUN": "dtr.example.org/library/wordpress",
|
||||
"Version": 1,
|
||||
"SHA256": "a4ffcae03710ae61f6d15d20ed5e3f3a6a91ebfd2a4ba7f31fc6308ec6cc3e3d",
|
||||
"Category": "update"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Below is the description for each of the fields in the response:
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Field name</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>count</code></td>
|
||||
<td>The number of records returned.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>ID</code></td>
|
||||
<td>The ID of the change record. Should be used in the <code>change_id</code>
|
||||
field of requests to provide a non-exclusive starting index. It should be treated
|
||||
as an opaque value that is guaranteed to be unique within an instance of
|
||||
notary.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>CreatedAt</code></td>
|
||||
<td>The time the change happened.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>GUN</code></td>
|
||||
<td>The DTR repository that was changed.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Version</code></td>
|
||||
<td>
|
||||
<p>The version that the repository was updated to. This increments
|
||||
every time there's a change to the trust repository.</p>
|
||||
<p>This is always <code>0</code> for events representing trusted data being
|
||||
removed from the repository.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>SHA256</code></td>
|
||||
<td>
|
||||
<p>The checksum of the timestamp being updated to. This can be used
|
||||
with the existing notary APIs to request said timestamp.</p>
|
||||
<p>This is always an empty string for events representing trusted data
|
||||
being removed from the repository</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Category</code></td>
|
||||
<td>The kind of change that was made to the trusted repository. Can be
|
||||
<code>update</code>, or <code>deletion</code>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
The results only include audit logs for events that happened more than 60
|
||||
seconds ago, and are sorted from oldest to newest.
|
||||
|
||||
Even though the authentication API always returns a token, the changefeed
|
||||
API validates if the user has access to see the audit logs or not:
|
||||
|
||||
* If the user is an admin they can see the audit logs for any repositories,
|
||||
* All other users can only see audit logs for repositories they have read access.
|
||||
|
||||
|
||||
## Example - Get audit logs for all repositories
|
||||
|
||||
Before going through this example, make sure that you:
|
||||
|
||||
* Are a DTR admin user.
|
||||
* Configured your [machine to trust DTR](../../user/access-dtr/index.md).
|
||||
* Created the `library/wordpress` repository.
|
||||
* Installed `jq`, to make it easier to parse the JSON responses.
|
||||
|
||||
```bash
|
||||
# Pull an image from Docker Hub
|
||||
docker pull wordpress:latest
|
||||
|
||||
# Tag that image
|
||||
docker tag wordpress:latest <dtr-url>/library/wordpress:1
|
||||
|
||||
# Log into DTR
|
||||
docker login <dtr-url>
|
||||
|
||||
# Push the image to DTR and sign it
|
||||
DOCKER_CONTENT_TRUST=1 docker push <dtr-url>/library/wordpress:1
|
||||
|
||||
# Get global-scope authorization token, and store it in TOKEN
|
||||
export TOKEN=$(curl --insecure --silent \
|
||||
--user '<user>:<password>' \
|
||||
'https://<dtr-url>/auth/token?realm=dtr&service=dtr&scope=registry:catalog:*' | jq --raw-output .token)
|
||||
|
||||
# Get audit logs for all repositories and pretty-print it
|
||||
# If you pushed the image less than 60 seconds ago, it's possible
|
||||
# That DTR doesn't show any events. Retry the command after a while.
|
||||
curl --insecure --silent \
|
||||
--header "Authorization: Bearer $TOKEN" \
|
||||
"https://<dtr-url>/v2/_trust/changefeed?records=10&change_id=0" | jq .
|
||||
```
|
||||
|
||||
## Example - Get audit logs for a single repository
|
||||
|
||||
Before going through this example, make sure that you:
|
||||
|
||||
* Configured your [machine to trust DTR](../../user/access-dtr/index.md).
|
||||
* Created the `library/nginx` repository.
|
||||
* Installed `jq`, to make it easier to parse the JSON responses.
|
||||
|
||||
```bash
|
||||
# Pull an image from Docker Hub
|
||||
docker pull nginx:latest
|
||||
|
||||
# Tag that image
|
||||
docker tag nginx:latest <dtr-url>/library/nginx:1
|
||||
|
||||
# Log into DTR
|
||||
docker login <dtr-url>
|
||||
|
||||
# Push the image to DTR and sign it
|
||||
DOCKER_CONTENT_TRUST=1 docker push <dtr-url>/library/nginx:1
|
||||
|
||||
# Get global-scope authorization token, and store it in TOKEN
|
||||
export TOKEN=$(curl --insecure --silent \
|
||||
--user '<user>:<password>' \
|
||||
'https://<dtr-url>/auth/token?realm=dtr&service=dtr&scope=repository:<dtr-url>/<repository>:pull' | jq --raw-output .token)
|
||||
|
||||
# Get audit logs for all repositories and pretty-print it
|
||||
# If you pushed the image less than 60 seconds ago, it's possible that
|
||||
# Docker Content Trust won't show any events. Retry the command after a while.
|
||||
curl --insecure --silent \
|
||||
--header "Authorization: Bearer $TOKEN" \
|
||||
"https://<dtr-url>/v2/<dtr-url>/<dtr-repo>/_trust/changefeed?records=10&change_id=0" | jq .
|
||||
```
|
||||
|
|
@ -0,0 +1,239 @@
|
|||
---
|
||||
title: Troubleshoot batch jobs
|
||||
description: Learn how Docker Trusted Registry run batch jobs, so that you can troubleshoot when something goes wrong
|
||||
keywords: dtr, troubleshoot
|
||||
---
|
||||
|
||||
DTR uses a job queue to schedule batch jobs. A job is placed on this work queue,
|
||||
and a job runner component of DTR consumes work from this cluster-wide job
|
||||
queue and executes it.
|
||||
|
||||

|
||||
|
||||
All DTR replicas have access to the job queue, and have a job runner component
|
||||
that can get and execute work.
|
||||
|
||||
## How it works
|
||||
|
||||
When a job is created, it is added to a cluster-wide job queue with the
|
||||
`waiting` status.
|
||||
When one of the DTR replicas is ready to claim, it waits a random time of up
|
||||
to 3 seconds, giving the opportunity to every replica to claim the task.
|
||||
|
||||
A replica gets a job by adding it's replica ID to the job. That way, other
|
||||
replicas know the job has been claimed. Once a replica claims a job it adds
|
||||
it to an internal queue of jobs, that is sorted by their `scheduledAt` time.
|
||||
When that time happens, the replica updates the job status to `running`, and
|
||||
starts executing it.
|
||||
|
||||
The job runner component of each DTR replica keeps an `heartbeatExpiration`
|
||||
entry on the database shared by all replicas. If a replica becomes
|
||||
unhealthy, other replicas notice this and update that worker status to `dead`.
|
||||
Also, all the jobs that replica had claimed are updated to the status `worker_dead`,
|
||||
so that other replicas can claim the job.
|
||||
|
||||
## Job types
|
||||
|
||||
DTR has several types of jobs.
|
||||
|
||||
| Job | Description |
|
||||
|:------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| gc | Garbage collection job that deletes layers associated with deleted images |
|
||||
| onlinegc | Garbage collection job that deletes layers associated with deleted images without putting the registry in read only mode |
|
||||
| onlinegc_metadata | Garbage collection job that deletes metadata associated with deleted images|
|
||||
| onlinegc_joblogs | Garbage collection job that deletes job logs based on a set job history setting |
|
||||
| metadatastoremigration | metadatastoremigration is a necessary migration that enables the online gc feature |
|
||||
| sleep | Sleep is used to test the correctness of the jobrunner. It sleeps for 60 seconds |
|
||||
| false | False is used to test the correctness of the jobrunner. It runs the `false` command and immediately fails |
|
||||
| tagmigration | Tag migration is used to synchronize tag and manifest information between the DTR database and the storage backend. |
|
||||
| bloblinkmigration | bloblinkmigration is a 2.1 to 2.1 upgrade process that adds references for blobs to repositories in the database |
|
||||
| license_update | License update checks for license expiration extensions if online license updates are enabled |
|
||||
| scan_check | An image security scanning job. This job does not perform the actual scanning, rather it spawns `scan_check_single` jobs (one for each layer in the image). Once all of the `scan_check_single` jobs are complete, this job will terminate |
|
||||
| scan_check_single | A security scanning job for a particular layer given by the `parameter: SHA256SUM`. This job breaks up the layer into components and checks each component for vulnerabilities |
|
||||
| scan_check_all | A security scanning job that updates all of the currently scanned images to display the latest vulnerabilities |
|
||||
| update_vuln_db | A job that is created to update DTR's vulnerability database. It uses an Internet connection to check for database updates through `https://dss-cve-updates.docker.com/` and updates the `dtr-scanningstore` container if there is a new update available |
|
||||
| scannedlayermigration | scannedlayermigration is a 2.4 to 2.5 upgrade process that restructures scanned image data |
|
||||
| push_mirror_tag | A job that pushes a tag to another registry after a push mirror policy has been evaluated |
|
||||
| poll_mirror | A global cron that evaluates poll mirroring policies |
|
||||
| webhook | A job that is used to dispatch a webhook payload to a single endpoint |
|
||||
|
||||
## Job status
|
||||
|
||||
Jobs can be in one of the following status:
|
||||
|
||||
| Status | Description |
|
||||
|:----------------|:------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| waiting | The job is unclaimed and waiting to be picked up by a worker |
|
||||
| running | The worker defined by `workerID` is currently running the job |
|
||||
| done | The job has successfully completed |
|
||||
| error | The job has completed with errors |
|
||||
| cancel_request | The worker monitors the job statuses in the database. If the status for a job changes to `cancel_request`, the worker will cancel the job |
|
||||
| cancel | The job has been canceled and not fully executed |
|
||||
| deleted | The job and logs have been removed |
|
||||
| worker_dead | The worker for this job has been declared `dead` and the job will not continue |
|
||||
| worker_shutdown | The worker that was running this job has been gracefully stopped |
|
||||
| worker | resurrection| The worker for this job has reconnected to the database and will cancel these jobs |
|
||||
|
||||
## Job capacity
|
||||
|
||||
Each job runner has a limited capacity and won't claim jobs that require an
|
||||
higher capacity. You can see the capacity of a job runner using the
|
||||
`GET /api/v0/workers` endpoint:
|
||||
|
||||
```json
|
||||
{
|
||||
"workers": [
|
||||
{
|
||||
"id": "000000000000",
|
||||
"status": "running",
|
||||
"capacityMap": {
|
||||
"scan": 1,
|
||||
"scanCheck": 1
|
||||
},
|
||||
"heartbeatExpiration": "2017-02-18T00:51:02Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
This means that the worker with replica ID `000000000000` has a capacity of 1
|
||||
`scan` and 1 `scanCheck`. If this worker notices that the following jobs
|
||||
are available:
|
||||
|
||||
```json
|
||||
{
|
||||
"jobs": [
|
||||
{
|
||||
"id": "0",
|
||||
"workerID": "",
|
||||
"status": "waiting",
|
||||
"capacityMap": {
|
||||
"scan": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "1",
|
||||
"workerID": "",
|
||||
"status": "waiting",
|
||||
"capacityMap": {
|
||||
"scan": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"workerID": "",
|
||||
"status": "waiting",
|
||||
"capacityMap": {
|
||||
"scanCheck": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Our worker will be able to pick up job id `0` and `2` since it has the capacity
|
||||
for both, while id `1` will have to wait until the previous scan job is complete:
|
||||
|
||||
```json
|
||||
{
|
||||
"jobs": [
|
||||
{
|
||||
"id": "0",
|
||||
"workerID": "000000000000",
|
||||
"status": "running",
|
||||
"capacityMap": {
|
||||
"scan": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "1",
|
||||
"workerID": "",
|
||||
"status": "waiting",
|
||||
"capacityMap": {
|
||||
"scan": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"workerID": "000000000000",
|
||||
"status": "running",
|
||||
"capacityMap": {
|
||||
"scanCheck": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Troubleshoot jobs
|
||||
|
||||
You can get the list of jobs, using the `GET /api/v0/jobs/` endpoint. Each job
|
||||
looks like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "1fcf4c0f-ff3b-471a-8839-5dcb631b2f7b",
|
||||
"retryFromID": "1fcf4c0f-ff3b-471a-8839-5dcb631b2f7b",
|
||||
"workerID": "000000000000",
|
||||
"status": "done",
|
||||
"scheduledAt": "2017-02-17T01:09:47.771Z",
|
||||
"lastUpdated": "2017-02-17T01:10:14.117Z",
|
||||
"action": "scan_check_single",
|
||||
"retriesLeft": 0,
|
||||
"retriesTotal": 0,
|
||||
"capacityMap": {
|
||||
"scan": 1
|
||||
},
|
||||
"parameters": {
|
||||
"SHA256SUM": "1bacd3c8ccb1f15609a10bd4a403831d0ec0b354438ddbf644c95c5d54f8eb13"
|
||||
},
|
||||
"deadline": "",
|
||||
"stopTimeout": ""
|
||||
}
|
||||
```
|
||||
|
||||
The fields of interest here are:
|
||||
|
||||
* `id`: the ID of the job
|
||||
* `workerID`: the ID of the worker in a DTR replica that is running this job
|
||||
* `status`: the current state of the job
|
||||
* `action`: what job the worker will actually perform
|
||||
* `capacityMap`: the available capacity a worker needs for this job to run
|
||||
|
||||
|
||||
## Cron jobs
|
||||
|
||||
Several of the jobs performed by DTR are run in a recurrent schedule. You can
|
||||
see those jobs using the `GET /api/v0/crons` endpoint:
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"crons": [
|
||||
{
|
||||
"id": "48875b1b-5006-48f5-9f3c-af9fbdd82255",
|
||||
"action": "license_update",
|
||||
"schedule": "57 54 3 * * *",
|
||||
"retries": 2,
|
||||
"capacityMap": null,
|
||||
"parameters": null,
|
||||
"deadline": "",
|
||||
"stopTimeout": "",
|
||||
"nextRun": "2017-02-22T03:54:57Z"
|
||||
},
|
||||
{
|
||||
"id": "b1c1e61e-1e74-4677-8e4a-2a7dacefffdc",
|
||||
"action": "update_db",
|
||||
"schedule": "0 0 3 * * *",
|
||||
"retries": 0,
|
||||
"capacityMap": null,
|
||||
"parameters": null,
|
||||
"deadline": "",
|
||||
"stopTimeout": "",
|
||||
"nextRun": "2017-02-22T03:00:00Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
The `schedule` uses a Unix crontab syntax.
|
|
@ -0,0 +1,138 @@
|
|||
---
|
||||
title: Troubleshoot Docker Trusted Registry
|
||||
description: Learn how to troubleshoot your DTR installation.
|
||||
keywords: registry, monitor, troubleshoot
|
||||
---
|
||||
|
||||
This guide contains tips and tricks for troubleshooting DTR problems.
|
||||
|
||||
## Troubleshoot overlay networks
|
||||
|
||||
High availability in DTR depends on swarm overlay networking. One way to test
|
||||
if overlay networks are working correctly is to deploy containers to the same
|
||||
overlay network on different nodes and see if they can ping one another.
|
||||
|
||||
Use SSH to log into a node and run:
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
--net dtr-ol --name overlay-test1 \
|
||||
--entrypoint sh {{ page.dtr_org }}/{{ page.dtr_repo }}
|
||||
```
|
||||
|
||||
Then use SSH to log into another node and run:
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
--net dtr-ol --name overlay-test2 \
|
||||
--entrypoint ping {{ page.dtr_org }}/{{ page.dtr_repo }} -c 3 overlay-test1
|
||||
```
|
||||
|
||||
If the second command succeeds, it indicates overlay networking is working
|
||||
correctly between those nodes.
|
||||
|
||||
You can run this test with any attachable overlay network and any Docker image
|
||||
that has `sh` and `ping`.
|
||||
|
||||
|
||||
## Access RethinkDB directly
|
||||
|
||||
DTR uses RethinkDB for persisting data and replicating it across replicas.
|
||||
It might be helpful to connect directly to the RethinkDB instance running on a
|
||||
DTR replica to check the DTR internal state.
|
||||
|
||||
> **Warning**: Modifying RethinkDB directly is not supported and may cause
|
||||
> problems.
|
||||
{: .warning }
|
||||
|
||||
Use SSH to log into a node that is running a DTR replica, and run the following
|
||||
commands:
|
||||
|
||||
{% raw %}
|
||||
```bash
|
||||
# List problems in the cluster detected by the current node.
|
||||
echo 'r.db("rethinkdb").table("current_issues")' | \
|
||||
docker exec -i \
|
||||
$(docker ps -q --filter name=dtr-rethinkdb) \
|
||||
rethinkcli non-interactive; \
|
||||
echo
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
On a healthy cluster the output will be `[]`.
|
||||
|
||||
RethinkDB stores data in different databases that contain multiple tables. This
|
||||
container can also be used to connect to the local DTR replica and
|
||||
interactively query the contents of the DB.
|
||||
|
||||
{% raw %}
|
||||
```bash
|
||||
docker exec -it $(docker ps -q --filter name=dtr-rethinkdb) rethinkcli
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
```none
|
||||
# List problems in the cluster detected by the current node.
|
||||
> r.db("rethinkdb").table("current_issues")
|
||||
[]
|
||||
|
||||
# List all the DBs in RethinkDB
|
||||
> r.dbList()
|
||||
[ 'dtr2',
|
||||
'jobrunner',
|
||||
'notaryserver',
|
||||
'notarysigner',
|
||||
'rethinkdb' ]
|
||||
|
||||
# List the tables in the dtr2 db
|
||||
> r.db('dtr2').tableList()
|
||||
[ 'client_tokens',
|
||||
'events',
|
||||
'manifests',
|
||||
'namespace_team_access',
|
||||
'properties',
|
||||
'repositories',
|
||||
'repository_team_access',
|
||||
'tags' ]
|
||||
|
||||
# List the entries in the repositories table
|
||||
> r.db('dtr2').table('repositories')
|
||||
[ { id: '19f1240a-08d8-4979-a898-6b0b5b2338d8',
|
||||
name: 'my-test-repo',
|
||||
namespaceAccountID: '924bf131-6213-43fa-a5ed-d73c7ccf392e',
|
||||
pk: 'cf5e8bf1197e281c747f27e203e42e22721d5c0870b06dfb1060ad0970e99ada',
|
||||
visibility: 'public' },
|
||||
...
|
||||
```
|
||||
|
||||
Individual DBs and tables are a private implementation detail and may change in DTR
|
||||
from version to version, but you can always use `dbList()` and `tableList()` to explore
|
||||
the contents and data structure.
|
||||
|
||||
[Learn more about RethinkDB queries](https://www.rethinkdb.com/docs/guide/javascript/).
|
||||
|
||||
## Recover from an unhealthy replica
|
||||
|
||||
When a DTR replica is unhealthy or down, the DTR web UI displays a warning:
|
||||
|
||||
```none
|
||||
Warning: The following replicas are unhealthy: 59e4e9b0a254; Reasons: Replica reported health too long ago: 2017-02-18T01:11:20Z; Replicas 000000000000, 563f02aba617 are still healthy.
|
||||
```
|
||||
|
||||
To fix this, you should remove the unhealthy replica from the DTR cluster,
|
||||
and join a new one. Start by running:
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} remove \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
And then:
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} join \
|
||||
--ucp-node <ucp-node-name> \
|
||||
--ucp-insecure-tls
|
||||
```
|
|
@ -0,0 +1,95 @@
|
|||
---
|
||||
title: Upgrade DTR
|
||||
description: Learn how to upgrade your Docker Trusted Registry
|
||||
keywords: dtr, upgrade, install
|
||||
---
|
||||
|
||||
{% assign previous_version="2.4" %}
|
||||
|
||||
DTR uses [semantic versioning](http://semver.org/) and we aim to achieve specific
|
||||
guarantees while upgrading between versions. We never support downgrading. We
|
||||
support upgrades according to the following rules:
|
||||
|
||||
* When upgrading from one patch version to another you can skip patch versions
|
||||
because no data migration is done for patch versions.
|
||||
* When upgrading between minor versions, you can't skip versions, but you can
|
||||
upgrade from any patch versions of the previous minor version to any patch
|
||||
version of the current minor version.
|
||||
* When upgrading between major versions you also have to upgrade one major
|
||||
version at a time, but you have to upgrade to the earliest available minor
|
||||
version. We also strongly recommend upgrading to the latest minor/patch
|
||||
version for your major version first.
|
||||
|
||||
| Description | From | To | Supported |
|
||||
|:-------------------------------------|:------|:----------|:----------|
|
||||
| patch upgrade | x.y.0 | x.y.1 | yes |
|
||||
| skip patch version | x.y.0 | x.y.2 | yes |
|
||||
| patch downgrade | x.y.2 | x.y.1 | no |
|
||||
| minor upgrade | x.y.* | x.y+1.* | yes |
|
||||
| skip minor version | x.y.* | x.y+2.* | no |
|
||||
| minor downgrade | x.y.* | x.y-1.* | no |
|
||||
| skip major version | x.*.* | x+2.*.* | no |
|
||||
| major downgrade | x.*.* | x-1.*.* | no |
|
||||
| major upgrade | x.y.z | x+1.0.0 | yes |
|
||||
| major upgrade skipping minor version | x.y.z | x+1.y+1.z | no |
|
||||
|
||||
There may be at most a few seconds of interruption during the upgrade of a
|
||||
DTR cluster. Schedule the upgrade to take place outside business peak hours
|
||||
to ensure the impact on your business is close to none.
|
||||
|
||||
## Minor upgrade
|
||||
|
||||
Before starting your upgrade, make sure that:
|
||||
* The version of UCP you are using is supported by the version of DTR you
|
||||
are trying to upgrade to. [Check the compatibility matrix](https://success.docker.com/Policies/Compatibility_Matrix).
|
||||
* You have a recent [DTR backup](disaster-recovery/create-a-backup.md).
|
||||
* You [disable Docker content trust in UCP](/ee/ucp/admin/configure/run-only-the-images-you-trust/).
|
||||
|
||||
### Step 1. Upgrade DTR to {{ previous_version }} if necessary
|
||||
|
||||
Make sure you're running DTR {{ previous_version }}. If that's not the case,
|
||||
[upgrade your installation to the {{ previous_version }} version](/datacenter/dtr/{{ previous_version }}/guides/admin/upgrade.md).
|
||||
|
||||
### Step 2. Upgrade DTR
|
||||
|
||||
Then pull the latest version of DTR:
|
||||
|
||||
```bash
|
||||
docker pull {{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }}
|
||||
```
|
||||
|
||||
If the node you're upgrading doesn't have access to the internet, you can
|
||||
follow the [offline installation documentation](install/install-offline.md)
|
||||
to get the images.
|
||||
|
||||
Once you have the latest image on your machine (and the images on the target
|
||||
nodes if upgrading offline), run the upgrade command:
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} upgrade \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
By default the upgrade command runs in interactive mode and prompts you for
|
||||
any necessary information. You can also check the
|
||||
[reference documentation](/reference/dtr/2.5/cli/index.md) for other existing flags.
|
||||
|
||||
The upgrade command will start replacing every container in your DTR cluster,
|
||||
one replica at a time. It will also perform certain data migrations. If anything
|
||||
fails or the upgrade is interrupted for any reason, you can re-run the upgrade
|
||||
command and it will resume from where it left off.
|
||||
|
||||
## Patch upgrade
|
||||
|
||||
A patch upgrade changes only the DTR containers and it's always safer than a minor
|
||||
upgrade. The command is the same as for a minor upgrade.
|
||||
|
||||
## Download the vulnerability database
|
||||
|
||||
After upgrading DTR, you need to re-download the vulnerability database.
|
||||
[Learn how to update your vulnerability database](configure/set-up-vulnerability-scans.md#update-the-cve-scanning-database).
|
||||
|
||||
## Where to go next
|
||||
|
||||
- [Release notes](../release-notes.md)
|
|
@ -0,0 +1,102 @@
|
|||
---
|
||||
title: DTR architecture
|
||||
description: Learn about the architecture of Docker Trusted Registry.
|
||||
keywords: registry, dtr, architecture
|
||||
---
|
||||
|
||||
Docker Trusted Registry (DTR) is a containerized application that runs on a
|
||||
Docker Universal Control Plane cluster.
|
||||
|
||||

|
||||
|
||||
Once you have DTR deployed, you use your Docker CLI client to login, push, and
|
||||
pull images.
|
||||
|
||||
## Under the hood
|
||||
|
||||
For high-availability you can deploy multiple DTR replicas, one on each UCP
|
||||
worker node.
|
||||
|
||||

|
||||
|
||||
All DTR replicas run the same set of services and changes to their configuration
|
||||
are automatically propagated to other replicas.
|
||||
|
||||
## DTR internal components
|
||||
|
||||
When you install DTR on a node, the following containers are started:
|
||||
|
||||
| Name | Description |
|
||||
|:-------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------|
|
||||
| dtr-api-<replica_id> | Executes the DTR business logic. It serves the DTR web application, and API |
|
||||
| dtr-garant-<replica_id> | Manages DTR authentication |
|
||||
| dtr-jobrunner-<replica_id> | Runs cleanup jobs in the background |
|
||||
| dtr-nginx-<replica_id> | Receives http and https requests and proxies them to other DTR components. By default it listens to ports 80 and 443 of the host |
|
||||
| dtr-notary-server-<replica_id> | Receives, validates, and serves content trust metadata, and is consulted when pushing or pulling to DTR with content trust enabled |
|
||||
| dtr-notary-signer-<replica_id> | Performs server-side timestamp and snapshot signing for content trust metadata |
|
||||
| dtr-registry-<replica_id> | Implements the functionality for pulling and pushing Docker images. It also handles how images are stored |
|
||||
| dtr-rethinkdb-<replica_id> | A database for persisting repository metadata |
|
||||
| dtr-scanningstore-<replica_id> | Stores security scanning data |
|
||||
|
||||
All these components are for internal use of DTR. Don't use them in your applications.
|
||||
|
||||
## Networks used by DTR
|
||||
|
||||
To allow containers to communicate, when installing DTR the following networks
|
||||
are created:
|
||||
|
||||
| Name | Type | Description |
|
||||
|:-------|:--------|:---------------------------------------------------------------------------------------|
|
||||
| dtr-ol | overlay | Allows DTR components running on different nodes to communicate, to replicate DTR data |
|
||||
|
||||
|
||||
## Volumes used by DTR
|
||||
|
||||
DTR uses these named volumes for persisting data:
|
||||
|
||||
| Volume name | Description |
|
||||
|:------------------------------------|:---------------------------------------------------------------------------------|
|
||||
| dtr-ca-<replica_id> | Root key material for the DTR root CA that issues certificates |
|
||||
| dtr-notary-<replica_id> | Certificate and keys for the Notary components |
|
||||
| dtr-postgres-<replica_id> | Vulnerability scans data |
|
||||
| dtr-registry-<replica_id> | Docker images data, if DTR is configured to store images on the local filesystem |
|
||||
| dtr-rethink-<replica_id> | Repository metadata |
|
||||
| dtr-nfs-registry-<replica_id> | Docker images data, if DTR is configured to store images on NFS |
|
||||
|
||||
You can customize the volume driver used for these volumes, by creating the
|
||||
volumes before installing DTR. During the installation, DTR checks which volumes
|
||||
don't exist in the node, and creates them using the default volume driver.
|
||||
|
||||
By default, the data for these volumes can be found at
|
||||
`/var/lib/docker/volumes/<volume-name>/_data`.
|
||||
|
||||
## Image storage
|
||||
|
||||
By default, Docker Trusted Registry stores images on the filesystem of the node
|
||||
where it is running, but you should configure it to use a centralized storage
|
||||
backend.
|
||||
|
||||

|
||||
|
||||
DTR supports these storage backends:
|
||||
|
||||
* NFS
|
||||
* Amazon S3
|
||||
* Cleversafe
|
||||
* Google Cloud Storage
|
||||
* OpenStack Swift
|
||||
* Microsoft Azure
|
||||
|
||||
## How to interact with DTR
|
||||
|
||||
DTR has a web UI where you can manage settings and user permissions.
|
||||
|
||||

|
||||
|
||||
You can push and pull images using the standard Docker CLI client or other tools
|
||||
that can interact with a Docker registry.
|
||||
|
||||
## Where to go next
|
||||
|
||||
* [System requirements](admin/install/system-requirements.md)
|
||||
* [Install DTR](admin/install/index.md)
|
After Width: | Height: | Size: 240 KiB |
After Width: | Height: | Size: 271 KiB |
After Width: | Height: | Size: 161 KiB |
After Width: | Height: | Size: 136 KiB |
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 130 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 97 KiB |
After Width: | Height: | Size: 57 KiB |
|
@ -0,0 +1,75 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="250px" viewBox="0 0 740 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 44.1 (41455) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>architecture-1</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="architecture-1">
|
||||
<g id="Group" transform="translate(33.000000, 51.000000)">
|
||||
<g id="stack" transform="translate(150.000000, 0.000000)">
|
||||
<g id="servers" transform="translate(0.000000, 114.000000)">
|
||||
<g id="cloud">
|
||||
<rect id="Rectangle-138" fill="#82949E" x="0" y="0" width="172" height="34" rx="2"></rect>
|
||||
<text id="cloud-servers" font-family="OpenSans, Open Sans" font-size="14" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="42.5097656" y="23">cloud servers</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="virtual" transform="translate(176.000000, 0.000000)">
|
||||
<rect id="Rectangle-138" fill="#82949E" x="0" y="0" width="172" height="34" rx="2"></rect>
|
||||
<text id="virtual-servers" font-family="OpenSans, Open Sans" font-size="14" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="39.8608398" y="23">virtual servers</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="physical" transform="translate(352.000000, 0.000000)">
|
||||
<rect id="Rectangle-138" fill="#82949E" x="0" y="0" width="172" height="34" rx="2"></rect>
|
||||
<text id="physical-servers" font-family="OpenSans, Open Sans" font-size="14" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="34.2075195" y="23">physical servers</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="docker" transform="translate(0.000000, 76.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="524" height="34" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="14" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="205.936035" y="23">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(0.000000, 38.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="524" height="34" rx="2"></rect>
|
||||
<text id="Universal-Control-Pl" font-family="OpenSans, Open Sans" font-size="14" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="185.536621" y="23">Universal Control Plane</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="172" height="34" rx="2"></rect>
|
||||
<text id="Docker-Trusted-Regis" font-family="OpenSans, Open Sans" font-size="14" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="8.13183594" y="23">Docker Trusted Registry</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="your-apps" transform="translate(176.000000, 0.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="348" height="34" rx="2"></rect>
|
||||
<text id="your-applications" font-family="OpenSans, Open Sans" font-size="14" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="118.428223" y="23">your applications</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="commands" transform="translate(0.000000, 7.000000)">
|
||||
<g id="command-2" transform="translate(0.000000, 38.000000)">
|
||||
<path d="M101,10 L136,10" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<circle id="Oval" fill="#8F9EA8" cx="138" cy="10" r="5"></circle>
|
||||
<text id="docker-run" font-family="CourierNewPS-BoldMT, Courier New" font-size="14" font-weight="bold" fill="#637986">
|
||||
<tspan x="0" y="12">docker run</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="command-1">
|
||||
<path d="M101,9 L136,9" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<circle id="Oval" fill="#82949E" cx="138" cy="9" r="5"></circle>
|
||||
<text id="docker-push" font-family="CourierNewPS-BoldMT, Courier New" font-size="14" font-weight="bold" fill="#637986">
|
||||
<tspan x="0" y="12">docker push</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.2 KiB |
|
@ -0,0 +1,225 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="250px" viewBox="0 0 740 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 44.1 (41455) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>architecture-2</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="architecture-2">
|
||||
<text id="UCP-cluster" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="28.025" y="239.009524">UCP cluster</tspan>
|
||||
</text>
|
||||
<g id="nodes" transform="translate(36.000000, 15.000000)">
|
||||
<g id="workers" transform="translate(233.000000, 116.000000)">
|
||||
<g id="node-1-copy">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-2" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="worker-dtr" transform="translate(347.000000, 0.000000)">
|
||||
<g id="node-1">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-2" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-3" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="manager-ucp">
|
||||
<g id="node-3" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="manager-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">manager node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-manager" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="16.0297852" y="15">UCP manager</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-2" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="manager-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">manager node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-manager" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="16.0297852" y="15">UCP manager</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="manager-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">manager node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-manager" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="16.0297852" y="15">UCP manager</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="21" y="3" width="687" height="245" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 17 KiB |
|
@ -0,0 +1,173 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="350px" viewBox="0 0 740 350" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>architecture-3</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<circle id="path-1" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-2" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-3" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-4" cx="31" cy="4" r="4"></circle>
|
||||
<circle id="path-5" cx="31" cy="4" r="4"></circle>
|
||||
<circle id="path-6" cx="31" cy="4" r="4"></circle>
|
||||
</defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="architecture-3">
|
||||
<g id="group" transform="translate(154.000000, 18.000000)">
|
||||
<g id="object-storage" transform="translate(34.000000, 235.000000)">
|
||||
<rect id="node-border" fill="#445D6E" x="0" y="0" width="365" height="80" rx="2"></rect>
|
||||
<text font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#F7F8F9">
|
||||
<tspan x="131.921387" y="44">shared object storage</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr">
|
||||
<text id="DTR-cluster" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="7.025" y="206.009524">DTR cluster</tspan>
|
||||
</text>
|
||||
<g id="arrows-copy" transform="translate(104.000000, 166.000000)">
|
||||
<g id="arrow-copy-2" transform="translate(218.500000, 37.000000) rotate(-90.000000) translate(-218.500000, -37.000000) translate(182.000000, 33.000000)">
|
||||
<path d="M2,4 L73,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-1"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-3" transform="translate(111.500000, 37.000000) rotate(-90.000000) translate(-111.500000, -37.000000) translate(75.000000, 33.000000)">
|
||||
<path d="M2,4 L73,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-2"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-4" transform="translate(4.500000, 37.000000) rotate(-90.000000) translate(-4.500000, -37.000000) translate(-32.000000, 33.000000)">
|
||||
<path d="M2,4 L73,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-3"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="network" transform="translate(33.000000, 23.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="366" height="22" rx="2"></rect>
|
||||
<text id="overlay-network" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="146.05127" y="15">overlay network</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrows" transform="translate(104.000000, 42.000000)">
|
||||
<g id="arrow-copy-2" transform="translate(218.500000, 18.000000) rotate(-90.000000) translate(-218.500000, -18.000000) translate(201.000000, 14.000000)">
|
||||
<path d="M0,4 L31,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-4"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="31" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-3" transform="translate(111.500000, 18.000000) rotate(-90.000000) translate(-111.500000, -18.000000) translate(94.000000, 14.000000)">
|
||||
<path d="M0,4 L31,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="31" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-4" transform="translate(4.500000, 18.000000) rotate(-90.000000) translate(-4.500000, -18.000000) translate(-13.000000, 14.000000)">
|
||||
<path d="M0,4 L31,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-6"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="31" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="nodes" transform="translate(60.000000, 70.000000)">
|
||||
<g id="node-3" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-2" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="433" height="216" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
|
@ -0,0 +1,332 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="350px" viewBox="0 0 740 350" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 44.1 (41455) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>architecture-4</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<circle id="path-1" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-2" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-3" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-4" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-5" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-6" cx="4" cy="4" r="4"></circle>
|
||||
</defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="architecture-4">
|
||||
<g id="ddc" transform="translate(30.000000, 56.000000)">
|
||||
<g id="swarm-group" transform="translate(0.000000, 42.000000)">
|
||||
<text id="Docker-swarm" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="15.8218828" y="236.009524">Docker swarm</tspan>
|
||||
</text>
|
||||
<rect id="group" stroke="#E0E4E7" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="703" height="245" rx="2"></rect>
|
||||
</g>
|
||||
<g id="load-balancers" transform="translate(23.000000, 0.000000)">
|
||||
<g id="right" transform="translate(347.000000, 0.000000)">
|
||||
<g id="main">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="309" height="22" rx="2"></rect>
|
||||
<text id="your-load-balancer" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="111.437988" y="15">your load balancer</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrows" transform="translate(43.000000, 21.000000)">
|
||||
<g id="arrow-copy-3" transform="translate(218.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-218.500000, -17.000000) translate(202.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-1"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy" transform="translate(111.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-111.500000, -17.000000) translate(95.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-2"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-2" transform="translate(4.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-4.500000, -17.000000) translate(-12.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-3"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="left">
|
||||
<g id="main">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="309" height="22" rx="2"></rect>
|
||||
<text id="your-load-balancer" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="111.437988" y="15">your load balancer</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrows" transform="translate(43.000000, 21.000000)">
|
||||
<g id="arrow-copy-3" transform="translate(218.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-218.500000, -17.000000) translate(202.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-4"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy" transform="translate(111.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-111.500000, -17.000000) translate(95.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-2" transform="translate(4.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-4.500000, -17.000000) translate(-12.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-6"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="swam" transform="translate(22.000000, 54.000000)">
|
||||
<g id="nodes">
|
||||
<g id="workers" transform="translate(216.000000, 118.000000)">
|
||||
<g id="node-1">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#E0E4E7"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#A1CFE8" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#A1CFE8" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#E0E4E7" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-3" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#E0E4E7"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#A1CFE8" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#A1CFE8" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#E0E4E7" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="workers-dtr" transform="translate(347.000000, 0.000000)">
|
||||
<g id="node-1-copy-4">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-5" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-6" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="managers-ucp">
|
||||
<g id="node-1">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="manager-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">manager node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-manager" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="16.0297852" y="15">UCP manager</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="manager-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">manager node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-manager" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="16.0297852" y="15">UCP manager</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-2" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="manager-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">manager node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-manager" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="16.0297852" y="15">UCP manager</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="users" transform="translate(174.000000, 5.000000)" fill="#82949E">
|
||||
<g id="right" transform="translate(347.000000, 0.000000)">
|
||||
<g id="user">
|
||||
<text id="UI" font-family="OpenSans, Open Sans" font-size="12" font-weight="normal">
|
||||
<tspan x="7" y="41">UI</tspan>
|
||||
</text>
|
||||
<path d="M13,13 C16.59125,13 19.5,10.083125 19.5,6.5 C19.5,2.90875 16.59125,0 13,0 C9.40875,0 6.5,2.90875 6.5,6.5 C6.5,10.083125 9.40875,13 13,13 L13,13 Z M13,16.25 C8.669375,16.25 0,18.419375 0,22.75 L0,26 L26,26 L26,22.75 C26,18.419375 17.330625,16.25 13,16.25 L13,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="user-copy" transform="translate(42.000000, 0.000000)">
|
||||
<text id="CLI" font-family="OpenSans, Open Sans" font-size="12" font-weight="normal">
|
||||
<tspan x="4" y="41">CLI</tspan>
|
||||
</text>
|
||||
<path d="M13,13 C16.59125,13 19.5,10.083125 19.5,6.5 C19.5,2.90875 16.59125,0 13,0 C9.40875,0 6.5,2.90875 6.5,6.5 C6.5,10.083125 9.40875,13 13,13 L13,13 Z M13,16.25 C8.669375,16.25 0,18.419375 0,22.75 L0,26 L26,26 L26,22.75 C26,18.419375 17.330625,16.25 13,16.25 L13,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
<g id="left">
|
||||
<g id="user">
|
||||
<text id="UI" font-family="OpenSans, Open Sans" font-size="12" font-weight="normal">
|
||||
<tspan x="7" y="41">UI</tspan>
|
||||
</text>
|
||||
<path d="M13,13 C16.59125,13 19.5,10.083125 19.5,6.5 C19.5,2.90875 16.59125,0 13,0 C9.40875,0 6.5,2.90875 6.5,6.5 C6.5,10.083125 9.40875,13 13,13 L13,13 Z M13,16.25 C8.669375,16.25 0,18.419375 0,22.75 L0,26 L26,26 L26,22.75 C26,18.419375 17.330625,16.25 13,16.25 L13,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="user-copy" transform="translate(42.000000, 0.000000)">
|
||||
<text id="CLI" font-family="OpenSans, Open Sans" font-size="12" font-weight="normal">
|
||||
<tspan x="4" y="41">CLI</tspan>
|
||||
</text>
|
||||
<path d="M13,13 C16.59125,13 19.5,10.083125 19.5,6.5 C19.5,2.90875 16.59125,0 13,0 C9.40875,0 6.5,2.90875 6.5,6.5 C6.5,10.083125 9.40875,13 13,13 L13,13 Z M13,16.25 C8.669375,16.25 0,18.419375 0,22.75 L0,26 L26,26 L26,22.75 C26,18.419375 17.330625,16.25 13,16.25 L13,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 27 KiB |
|
@ -0,0 +1,90 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="690px" height="282px" viewBox="0 0 690 282" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 3.8.3 (29802) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>dtr-authorization-1</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<rect id="path-1" x="0" y="0" width="690" height="282"></rect>
|
||||
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="690" height="282" fill="white">
|
||||
<use xlink:href="#path-1"></use>
|
||||
</mask>
|
||||
</defs>
|
||||
<g id="Apps" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="dtr-authorization-1">
|
||||
<g id="all" transform="translate(175.000000, 62.000000)">
|
||||
<g id="Group" transform="translate(168.000000, 0.000000)">
|
||||
<g id="teams">
|
||||
<g id="billing-team" transform="translate(100.000000, 0.000000)">
|
||||
<path d="M34.5,26.5 C41.820625,26.5 47.75,20.5540625 47.75,13.25 C47.75,5.929375 41.820625,0 34.5,0 C27.179375,0 21.25,5.929375 21.25,13.25 C21.25,20.5540625 27.179375,26.5 34.5,26.5 L34.5,26.5 Z M34.5,33.125 C25.6721875,33.125 8,37.5471875 8,46.375 L8,53 L61,53 L61,46.375 C61,37.5471875 43.3278125,33.125 34.5,33.125 L34.5,33.125 Z" id="Shape-Copy" fill="#9967FF"></path>
|
||||
<text font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#C0C9CE">
|
||||
<tspan x="0" y="68">billing team</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="blog-team">
|
||||
<text font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#C0C9CE">
|
||||
<tspan x="0" y="68">blog team</tspan>
|
||||
</text>
|
||||
<path d="M29.5,26.5 C36.820625,26.5 42.75,20.5540625 42.75,13.25 C42.75,5.929375 36.820625,0 29.5,0 C22.179375,0 16.25,5.929375 16.25,13.25 C16.25,20.5540625 22.179375,26.5 29.5,26.5 L29.5,26.5 Z M29.5,33.125 C20.6721875,33.125 3,37.5471875 3,46.375 L3,53 L56,53 L56,46.375 C56,37.5471875 38.3278125,33.125 29.5,33.125 L29.5,33.125 Z" id="Shape-Copy-2" fill="#00CBCA"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="permissions" transform="translate(160.000000, 101.000000)">
|
||||
<g id="6" transform="translate(105.000000, 84.000000)" fill="#C0C9CE">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="5" transform="translate(0.000000, 84.000000)" fill="#C0C9CE">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="4" transform="translate(105.000000, 42.000000)">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings" fill="#C0C9CE"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape" fill="#445D6E"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape" fill="#445D6E"></path>
|
||||
</g>
|
||||
<g id="3" transform="translate(0.000000, 42.000000)">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings" fill="#C0C9CE"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape" fill="#445D6E"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape" fill="#C0C9CE"></path>
|
||||
</g>
|
||||
<g id="2" transform="translate(105.000000, 0.000000)" fill="#445D6E">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="1" fill="#C0C9CE">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
<g id="repos" transform="translate(0.000000, 98.000000)">
|
||||
<g id="node" transform="translate(0.000000, 84.000000)">
|
||||
<text id="whale/node" font-family="OpenSans-Semibold, Open Sans" font-size="16" font-weight="500" fill="#C0C9CE">
|
||||
<tspan x="33" y="19">whale/node</tspan>
|
||||
</text>
|
||||
<path d="M27.5661032,5.88472594 C28.0144632,6.52363904 28.1153442,7.24661966 27.8687462,8.05366778 L23.245033,23.2867012 C23.0320619,24.0040773 22.6033176,24.6065612 21.9588,25.0941528 C21.3142824,25.5817443 20.6277311,25.8255401 19.8991459,25.8255401 L4.38028296,25.8255401 C3.51718982,25.8255401 2.68492144,25.5256993 1.88347781,24.9260177 C1.08203418,24.3263361 0.524386344,23.5893443 0.210534294,22.7150421 C-0.0584817485,21.964039 -0.0696907502,21.2522674 0.176907289,20.5797273 C0.176907289,20.5348913 0.193720792,20.3835698 0.227347797,20.1257627 C0.260974802,19.8679557 0.283392806,19.6605891 0.294601808,19.5036631 C0.30581081,19.4139911 0.288997307,19.2934943 0.2441613,19.1421728 C0.199325293,18.9908513 0.18251179,18.8815635 0.193720792,18.8143095 C0.216138795,18.6910105 0.260974802,18.573316 0.328228813,18.4612259 C0.395482824,18.3491359 0.487957089,18.2174302 0.605651607,18.0661086 C0.723346126,17.9147871 0.815820391,17.7830813 0.883074402,17.6709913 C1.14088144,17.2450492 1.39308398,16.7322374 1.63968202,16.1325558 C1.88628006,15.5328742 2.05441509,15.0200624 2.1440871,14.5941203 C2.17771411,14.4820303 2.18051636,14.3138953 2.15249385,14.0897152 C2.12447135,13.8655352 2.1216691,13.7086092 2.1440871,13.6189372 C2.17771411,13.4956382 2.27299062,13.3387121 2.42991665,13.1481591 C2.58684267,12.9576061 2.68211919,12.8287025 2.71574619,12.7614485 C2.95113523,12.3579245 3.18652427,11.8423104 3.42191331,11.2146063 C3.65730234,10.5869022 3.79741487,10.0824971 3.84225087,9.70139105 C3.85345988,9.60051003 3.83944862,9.421166 3.80021712,9.16335896 C3.76098561,8.90555192 3.76378786,8.7486259 3.80862387,8.69258089 C3.85345988,8.54686386 3.9767589,8.37592659 4.17852093,8.17976905 C4.38028296,7.98361152 4.50358198,7.85751025 4.54841799,7.80146524 C4.76138902,7.5100312 4.99958031,7.03645087 5.26299185,6.38072427 C5.52640339,5.72499766 5.68052717,5.18416333 5.72536317,4.75822126 C5.73657218,4.66854924 5.71975867,4.52563447 5.67492267,4.32947694 C5.63008666,4.13331941 5.61887766,3.98480014 5.64129566,3.88391912 C5.66371366,3.79424711 5.71415417,3.69336609 5.79261718,3.58127607 C5.8710802,3.46918605 5.97196121,3.34028253 6.09526023,3.19456551 C6.21855925,3.04884849 6.31383577,2.93115397 6.38108978,2.84148195 C6.47076179,2.70697393 6.56323606,2.53603665 6.65851257,2.32867012 C6.75378909,2.12130359 6.8378566,1.92514606 6.91071511,1.74019753 C6.98357362,1.555249 7.07324564,1.35348697 7.17973116,1.13491143 C7.28621667,0.916335896 7.39550444,0.736991868 7.50759446,0.596879345 C7.61968448,0.456766823 7.76820375,0.325061052 7.95315228,0.201762032 C8.13810081,0.0784630125 8.33986284,0.0140112522 8.55843838,0.00840675134 C8.77701391,0.00280225045 9.0432277,0.0336270054 9.35707975,0.100881016 L9.34026625,0.151321524 C9.76620832,0.050440508 10.0520379,0 10.1977549,0 L22.9928304,0 C23.8222966,0 24.4612097,0.31385205 24.9095697,0.94155615 C25.3579298,1.56926025 25.4588108,2.29784537 25.2122128,3.1273115 L20.605313,18.3603449 C20.201789,19.6942161 19.8010672,20.554507 19.4031476,20.9412176 C19.005228,21.3279282 18.2850497,21.5212834 17.2426125,21.5212834 L2.63167868,21.5212834 C2.32903563,21.5212834 2.1160646,21.6053509 1.99276558,21.773486 C1.86946656,21.95283 1.86386206,22.1938235 1.97595208,22.4964666 C2.24496812,23.2810967 3.05201625,23.6734118 4.39709646,23.6734118 L19.9159594,23.6734118 C20.2410205,23.6734118 20.5548725,23.586542 20.8575156,23.4128025 C21.1601586,23.239063 21.3563162,23.0064762 21.4459882,22.7150421 L26.490039,6.12011498 C26.568502,5.87351694 26.5965245,5.55406039 26.5741065,5.16174532 C27.0000486,5.32988035 27.3307141,5.57087389 27.5661032,5.88472594 L27.5661032,5.88472594 Z M9.6765363,5.91835294 C9.6317003,6.06406997 9.6429093,6.19017124 9.71016331,6.29665675 C9.77741732,6.40314227 9.88950734,6.45638503 10.0464334,6.45638503 L20.269043,6.45638503 C20.41476,6.45638503 20.5576748,6.40314227 20.6977873,6.29665675 C20.8378998,6.19017124 20.9303741,6.06406997 20.9752101,5.91835294 L21.3282937,4.84228877 C21.3731297,4.69657175 21.3619207,4.57047048 21.2946667,4.46398496 C21.2274126,4.35749944 21.1153226,4.30425669 20.9583966,4.30425669 L10.735787,4.30425669 C10.5900699,4.30425669 10.4471552,4.35749944 10.3070427,4.46398496 C10.1669301,4.57047048 10.0744559,4.69657175 10.0296199,4.84228877 L9.6765363,5.91835294 Z M8.28101558,10.2226096 C8.23617957,10.3683267 8.24738858,10.4944279 8.31464259,10.6009134 C8.3818966,10.707399 8.49398662,10.7606417 8.65091264,10.7606417 L18.8735223,10.7606417 C19.0192393,10.7606417 19.1621541,10.707399 19.3022666,10.6009134 C19.4423791,10.4944279 19.5348534,10.3683267 19.5796894,10.2226096 L19.9327729,9.14654546 C19.9776089,9.00082844 19.9663999,8.87472717 19.8991459,8.76824165 C19.8318919,8.66175613 19.7198019,8.60851337 19.5628759,8.60851337 L9.34026625,8.60851337 C9.19454923,8.60851337 9.05163445,8.66175613 8.91152193,8.76824165 C8.77140941,8.87472717 8.67893514,9.00082844 8.63409914,9.14654546 L8.28101558,10.2226096 Z" id="Shape" fill="#1AAAF8"></path>
|
||||
</g>
|
||||
<g id="java" transform="translate(0.000000, 42.000000)">
|
||||
<text id="whale/java" font-family="OpenSans-Semibold, Open Sans" font-size="16" font-weight="500" fill="#C0C9CE">
|
||||
<tspan x="33" y="19">whale/java</tspan>
|
||||
</text>
|
||||
<path d="M27.5661032,5.88472594 C28.0144632,6.52363904 28.1153442,7.24661966 27.8687462,8.05366778 L23.245033,23.2867012 C23.0320619,24.0040773 22.6033176,24.6065612 21.9588,25.0941528 C21.3142824,25.5817443 20.6277311,25.8255401 19.8991459,25.8255401 L4.38028296,25.8255401 C3.51718982,25.8255401 2.68492144,25.5256993 1.88347781,24.9260177 C1.08203418,24.3263361 0.524386344,23.5893443 0.210534294,22.7150421 C-0.0584817485,21.964039 -0.0696907502,21.2522674 0.176907289,20.5797273 C0.176907289,20.5348913 0.193720792,20.3835698 0.227347797,20.1257627 C0.260974802,19.8679557 0.283392806,19.6605891 0.294601808,19.5036631 C0.30581081,19.4139911 0.288997307,19.2934943 0.2441613,19.1421728 C0.199325293,18.9908513 0.18251179,18.8815635 0.193720792,18.8143095 C0.216138795,18.6910105 0.260974802,18.573316 0.328228813,18.4612259 C0.395482824,18.3491359 0.487957089,18.2174302 0.605651607,18.0661086 C0.723346126,17.9147871 0.815820391,17.7830813 0.883074402,17.6709913 C1.14088144,17.2450492 1.39308398,16.7322374 1.63968202,16.1325558 C1.88628006,15.5328742 2.05441509,15.0200624 2.1440871,14.5941203 C2.17771411,14.4820303 2.18051636,14.3138953 2.15249385,14.0897152 C2.12447135,13.8655352 2.1216691,13.7086092 2.1440871,13.6189372 C2.17771411,13.4956382 2.27299062,13.3387121 2.42991665,13.1481591 C2.58684267,12.9576061 2.68211919,12.8287025 2.71574619,12.7614485 C2.95113523,12.3579245 3.18652427,11.8423104 3.42191331,11.2146063 C3.65730234,10.5869022 3.79741487,10.0824971 3.84225087,9.70139105 C3.85345988,9.60051003 3.83944862,9.421166 3.80021712,9.16335896 C3.76098561,8.90555192 3.76378786,8.7486259 3.80862387,8.69258089 C3.85345988,8.54686386 3.9767589,8.37592659 4.17852093,8.17976905 C4.38028296,7.98361152 4.50358198,7.85751025 4.54841799,7.80146524 C4.76138902,7.5100312 4.99958031,7.03645087 5.26299185,6.38072427 C5.52640339,5.72499766 5.68052717,5.18416333 5.72536317,4.75822126 C5.73657218,4.66854924 5.71975867,4.52563447 5.67492267,4.32947694 C5.63008666,4.13331941 5.61887766,3.98480014 5.64129566,3.88391912 C5.66371366,3.79424711 5.71415417,3.69336609 5.79261718,3.58127607 C5.8710802,3.46918605 5.97196121,3.34028253 6.09526023,3.19456551 C6.21855925,3.04884849 6.31383577,2.93115397 6.38108978,2.84148195 C6.47076179,2.70697393 6.56323606,2.53603665 6.65851257,2.32867012 C6.75378909,2.12130359 6.8378566,1.92514606 6.91071511,1.74019753 C6.98357362,1.555249 7.07324564,1.35348697 7.17973116,1.13491143 C7.28621667,0.916335896 7.39550444,0.736991868 7.50759446,0.596879345 C7.61968448,0.456766823 7.76820375,0.325061052 7.95315228,0.201762032 C8.13810081,0.0784630125 8.33986284,0.0140112522 8.55843838,0.00840675134 C8.77701391,0.00280225045 9.0432277,0.0336270054 9.35707975,0.100881016 L9.34026625,0.151321524 C9.76620832,0.050440508 10.0520379,0 10.1977549,0 L22.9928304,0 C23.8222966,0 24.4612097,0.31385205 24.9095697,0.94155615 C25.3579298,1.56926025 25.4588108,2.29784537 25.2122128,3.1273115 L20.605313,18.3603449 C20.201789,19.6942161 19.8010672,20.554507 19.4031476,20.9412176 C19.005228,21.3279282 18.2850497,21.5212834 17.2426125,21.5212834 L2.63167868,21.5212834 C2.32903563,21.5212834 2.1160646,21.6053509 1.99276558,21.773486 C1.86946656,21.95283 1.86386206,22.1938235 1.97595208,22.4964666 C2.24496812,23.2810967 3.05201625,23.6734118 4.39709646,23.6734118 L19.9159594,23.6734118 C20.2410205,23.6734118 20.5548725,23.586542 20.8575156,23.4128025 C21.1601586,23.239063 21.3563162,23.0064762 21.4459882,22.7150421 L26.490039,6.12011498 C26.568502,5.87351694 26.5965245,5.55406039 26.5741065,5.16174532 C27.0000486,5.32988035 27.3307141,5.57087389 27.5661032,5.88472594 L27.5661032,5.88472594 Z M9.6765363,5.91835294 C9.6317003,6.06406997 9.6429093,6.19017124 9.71016331,6.29665675 C9.77741732,6.40314227 9.88950734,6.45638503 10.0464334,6.45638503 L20.269043,6.45638503 C20.41476,6.45638503 20.5576748,6.40314227 20.6977873,6.29665675 C20.8378998,6.19017124 20.9303741,6.06406997 20.9752101,5.91835294 L21.3282937,4.84228877 C21.3731297,4.69657175 21.3619207,4.57047048 21.2946667,4.46398496 C21.2274126,4.35749944 21.1153226,4.30425669 20.9583966,4.30425669 L10.735787,4.30425669 C10.5900699,4.30425669 10.4471552,4.35749944 10.3070427,4.46398496 C10.1669301,4.57047048 10.0744559,4.69657175 10.0296199,4.84228877 L9.6765363,5.91835294 Z M8.28101558,10.2226096 C8.23617957,10.3683267 8.24738858,10.4944279 8.31464259,10.6009134 C8.3818966,10.707399 8.49398662,10.7606417 8.65091264,10.7606417 L18.8735223,10.7606417 C19.0192393,10.7606417 19.1621541,10.707399 19.3022666,10.6009134 C19.4423791,10.4944279 19.5348534,10.3683267 19.5796894,10.2226096 L19.9327729,9.14654546 C19.9776089,9.00082844 19.9663999,8.87472717 19.8991459,8.76824165 C19.8318919,8.66175613 19.7198019,8.60851337 19.5628759,8.60851337 L9.34026625,8.60851337 C9.19454923,8.60851337 9.05163445,8.66175613 8.91152193,8.76824165 C8.77140941,8.87472717 8.67893514,9.00082844 8.63409914,9.14654546 L8.28101558,10.2226096 Z" id="Shape" fill="#1AAAF8"></path>
|
||||
</g>
|
||||
<g id="golang">
|
||||
<text id="whale/golang" font-family="OpenSans-Semibold, Open Sans" font-size="16" font-weight="500" fill="#C0C9CE">
|
||||
<tspan x="33" y="19">whale/golang</tspan>
|
||||
</text>
|
||||
<path d="M27.5661032,5.88472594 C28.0144632,6.52363904 28.1153442,7.24661966 27.8687462,8.05366778 L23.245033,23.2867012 C23.0320619,24.0040773 22.6033176,24.6065612 21.9588,25.0941528 C21.3142824,25.5817443 20.6277311,25.8255401 19.8991459,25.8255401 L4.38028296,25.8255401 C3.51718982,25.8255401 2.68492144,25.5256993 1.88347781,24.9260177 C1.08203418,24.3263361 0.524386344,23.5893443 0.210534294,22.7150421 C-0.0584817485,21.964039 -0.0696907502,21.2522674 0.176907289,20.5797273 C0.176907289,20.5348913 0.193720792,20.3835698 0.227347797,20.1257627 C0.260974802,19.8679557 0.283392806,19.6605891 0.294601808,19.5036631 C0.30581081,19.4139911 0.288997307,19.2934943 0.2441613,19.1421728 C0.199325293,18.9908513 0.18251179,18.8815635 0.193720792,18.8143095 C0.216138795,18.6910105 0.260974802,18.573316 0.328228813,18.4612259 C0.395482824,18.3491359 0.487957089,18.2174302 0.605651607,18.0661086 C0.723346126,17.9147871 0.815820391,17.7830813 0.883074402,17.6709913 C1.14088144,17.2450492 1.39308398,16.7322374 1.63968202,16.1325558 C1.88628006,15.5328742 2.05441509,15.0200624 2.1440871,14.5941203 C2.17771411,14.4820303 2.18051636,14.3138953 2.15249385,14.0897152 C2.12447135,13.8655352 2.1216691,13.7086092 2.1440871,13.6189372 C2.17771411,13.4956382 2.27299062,13.3387121 2.42991665,13.1481591 C2.58684267,12.9576061 2.68211919,12.8287025 2.71574619,12.7614485 C2.95113523,12.3579245 3.18652427,11.8423104 3.42191331,11.2146063 C3.65730234,10.5869022 3.79741487,10.0824971 3.84225087,9.70139105 C3.85345988,9.60051003 3.83944862,9.421166 3.80021712,9.16335896 C3.76098561,8.90555192 3.76378786,8.7486259 3.80862387,8.69258089 C3.85345988,8.54686386 3.9767589,8.37592659 4.17852093,8.17976905 C4.38028296,7.98361152 4.50358198,7.85751025 4.54841799,7.80146524 C4.76138902,7.5100312 4.99958031,7.03645087 5.26299185,6.38072427 C5.52640339,5.72499766 5.68052717,5.18416333 5.72536317,4.75822126 C5.73657218,4.66854924 5.71975867,4.52563447 5.67492267,4.32947694 C5.63008666,4.13331941 5.61887766,3.98480014 5.64129566,3.88391912 C5.66371366,3.79424711 5.71415417,3.69336609 5.79261718,3.58127607 C5.8710802,3.46918605 5.97196121,3.34028253 6.09526023,3.19456551 C6.21855925,3.04884849 6.31383577,2.93115397 6.38108978,2.84148195 C6.47076179,2.70697393 6.56323606,2.53603665 6.65851257,2.32867012 C6.75378909,2.12130359 6.8378566,1.92514606 6.91071511,1.74019753 C6.98357362,1.555249 7.07324564,1.35348697 7.17973116,1.13491143 C7.28621667,0.916335896 7.39550444,0.736991868 7.50759446,0.596879345 C7.61968448,0.456766823 7.76820375,0.325061052 7.95315228,0.201762032 C8.13810081,0.0784630125 8.33986284,0.0140112522 8.55843838,0.00840675134 C8.77701391,0.00280225045 9.0432277,0.0336270054 9.35707975,0.100881016 L9.34026625,0.151321524 C9.76620832,0.050440508 10.0520379,0 10.1977549,0 L22.9928304,0 C23.8222966,0 24.4612097,0.31385205 24.9095697,0.94155615 C25.3579298,1.56926025 25.4588108,2.29784537 25.2122128,3.1273115 L20.605313,18.3603449 C20.201789,19.6942161 19.8010672,20.554507 19.4031476,20.9412176 C19.005228,21.3279282 18.2850497,21.5212834 17.2426125,21.5212834 L2.63167868,21.5212834 C2.32903563,21.5212834 2.1160646,21.6053509 1.99276558,21.773486 C1.86946656,21.95283 1.86386206,22.1938235 1.97595208,22.4964666 C2.24496812,23.2810967 3.05201625,23.6734118 4.39709646,23.6734118 L19.9159594,23.6734118 C20.2410205,23.6734118 20.5548725,23.586542 20.8575156,23.4128025 C21.1601586,23.239063 21.3563162,23.0064762 21.4459882,22.7150421 L26.490039,6.12011498 C26.568502,5.87351694 26.5965245,5.55406039 26.5741065,5.16174532 C27.0000486,5.32988035 27.3307141,5.57087389 27.5661032,5.88472594 L27.5661032,5.88472594 Z M9.6765363,5.91835294 C9.6317003,6.06406997 9.6429093,6.19017124 9.71016331,6.29665675 C9.77741732,6.40314227 9.88950734,6.45638503 10.0464334,6.45638503 L20.269043,6.45638503 C20.41476,6.45638503 20.5576748,6.40314227 20.6977873,6.29665675 C20.8378998,6.19017124 20.9303741,6.06406997 20.9752101,5.91835294 L21.3282937,4.84228877 C21.3731297,4.69657175 21.3619207,4.57047048 21.2946667,4.46398496 C21.2274126,4.35749944 21.1153226,4.30425669 20.9583966,4.30425669 L10.735787,4.30425669 C10.5900699,4.30425669 10.4471552,4.35749944 10.3070427,4.46398496 C10.1669301,4.57047048 10.0744559,4.69657175 10.0296199,4.84228877 L9.6765363,5.91835294 Z M8.28101558,10.2226096 C8.23617957,10.3683267 8.24738858,10.4944279 8.31464259,10.6009134 C8.3818966,10.707399 8.49398662,10.7606417 8.65091264,10.7606417 L18.8735223,10.7606417 C19.0192393,10.7606417 19.1621541,10.707399 19.3022666,10.6009134 C19.4423791,10.4944279 19.5348534,10.3683267 19.5796894,10.2226096 L19.9327729,9.14654546 C19.9776089,9.00082844 19.9663999,8.87472717 19.8991459,8.76824165 C19.8318919,8.66175613 19.7198019,8.60851337 19.5628759,8.60851337 L9.34026625,8.60851337 C9.19454923,8.60851337 9.05163445,8.66175613 8.91152193,8.76824165 C8.77140941,8.87472717 8.67893514,9.00082844 8.63409914,9.14654546 L8.28101558,10.2226096 Z" id="Shape" fill="#1AAAF8"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<text id="Whale-organization" font-family="OpenSans-Semibold, Open Sans" font-size="16" font-weight="500" fill="#C0C9CE">
|
||||
<tspan x="270" y="19">Whale organization</tspan>
|
||||
</text>
|
||||
<use id="border" stroke="#C0C9CE" mask="url(#mask-2)" stroke-width="2" xlink:href="#path-1"></use>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 54 KiB |
|
@ -0,0 +1,173 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="350px" viewBox="0 0 740 350" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>configure-external-storage-1</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<circle id="path-1" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-2" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-3" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-4" cx="31" cy="4" r="4"></circle>
|
||||
<circle id="path-5" cx="31" cy="4" r="4"></circle>
|
||||
<circle id="path-6" cx="31" cy="4" r="4"></circle>
|
||||
</defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="configure-external-storage-1">
|
||||
<g id="group" transform="translate(154.000000, 18.000000)">
|
||||
<g id="object-storage" transform="translate(34.000000, 235.000000)">
|
||||
<rect id="node-border" fill="#445D6E" x="0" y="0" width="365" height="80" rx="2"></rect>
|
||||
<text font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#F7F8F9">
|
||||
<tspan x="131.921387" y="44">shared object storage</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr">
|
||||
<text id="DTR-cluster" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="7.025" y="206.009524">DTR cluster</tspan>
|
||||
</text>
|
||||
<g id="arrows-copy" transform="translate(104.000000, 166.000000)">
|
||||
<g id="arrow-copy-2" transform="translate(218.500000, 37.000000) rotate(-90.000000) translate(-218.500000, -37.000000) translate(182.000000, 33.000000)">
|
||||
<path d="M2,4 L73,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-1"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-3" transform="translate(111.500000, 37.000000) rotate(-90.000000) translate(-111.500000, -37.000000) translate(75.000000, 33.000000)">
|
||||
<path d="M2,4 L73,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-2"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-4" transform="translate(4.500000, 37.000000) rotate(-90.000000) translate(-4.500000, -37.000000) translate(-32.000000, 33.000000)">
|
||||
<path d="M2,4 L73,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-3"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="network" transform="translate(33.000000, 23.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="366" height="22" rx="2"></rect>
|
||||
<text id="overlay-network" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="146.05127" y="15">overlay network</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrows" transform="translate(104.000000, 42.000000)">
|
||||
<g id="arrow-copy-2" transform="translate(218.500000, 18.000000) rotate(-90.000000) translate(-218.500000, -18.000000) translate(201.000000, 14.000000)">
|
||||
<path d="M0,4 L31,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-4"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="31" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-3" transform="translate(111.500000, 18.000000) rotate(-90.000000) translate(-111.500000, -18.000000) translate(94.000000, 14.000000)">
|
||||
<path d="M0,4 L31,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="31" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-4" transform="translate(4.500000, 18.000000) rotate(-90.000000) translate(-4.500000, -18.000000) translate(-13.000000, 14.000000)">
|
||||
<path d="M0,4 L31,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-6"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="31" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="nodes" transform="translate(60.000000, 70.000000)">
|
||||
<g id="node-3" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-2" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="433" height="216" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 108 KiB |
After Width: | Height: | Size: 144 KiB |
After Width: | Height: | Size: 140 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 104 KiB |
After Width: | Height: | Size: 114 KiB |
After Width: | Height: | Size: 114 KiB |
After Width: | Height: | Size: 249 KiB |
After Width: | Height: | Size: 100 KiB |
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 259 KiB |
After Width: | Height: | Size: 92 KiB |
After Width: | Height: | Size: 88 KiB |
|
@ -0,0 +1,81 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="690px" height="250px" viewBox="0 0 690 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>delegate-image-signing-1</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="delegate-image-signing-1">
|
||||
<g id="all" transform="translate(175.000000, 11.000000)">
|
||||
<g id="Group" transform="translate(171.000000, 0.000000)">
|
||||
<g id="teams">
|
||||
<g id="billing-team" transform="translate(97.000000, 0.000000)">
|
||||
<path d="M34.5,26.5 C41.820625,26.5 47.75,20.5540625 47.75,13.25 C47.75,5.929375 41.820625,0 34.5,0 C27.179375,0 21.25,5.929375 21.25,13.25 C21.25,20.5540625 27.179375,26.5 34.5,26.5 L34.5,26.5 Z M34.5,33.125 C25.6721875,33.125 8,37.5471875 8,46.375 L8,53 L61,53 L61,46.375 C61,37.5471875 43.3278125,33.125 34.5,33.125 L34.5,33.125 Z" id="Shape-Copy" fill="#FFB463"></path>
|
||||
<text id="IT-ops-team" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#C0C9CE">
|
||||
<tspan x="0.799804688" y="70">IT ops team</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="blog-team">
|
||||
<text id="QA-team" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#C0C9CE">
|
||||
<tspan x="1.71972656" y="70">QA team</tspan>
|
||||
</text>
|
||||
<path d="M26.5,26.5 C33.820625,26.5 39.75,20.5540625 39.75,13.25 C39.75,5.929375 33.820625,0 26.5,0 C19.179375,0 13.25,5.929375 13.25,13.25 C13.25,20.5540625 19.179375,26.5 26.5,26.5 L26.5,26.5 Z M26.5,33.125 C17.6721875,33.125 3.55271368e-15,37.5471875 3.55271368e-15,46.375 L3.55271368e-15,53 L53,53 L53,46.375 C53,37.5471875 35.3278125,33.125 26.5,33.125 L26.5,33.125 Z" id="Shape-Copy-2" fill="#00B6B5"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="permissions" transform="translate(160.000000, 101.000000)">
|
||||
<g id="6" transform="translate(105.000000, 84.000000)" fill="#445D6E">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="5" transform="translate(0.000000, 84.000000)" fill="#C0C9CE">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="4" transform="translate(105.000000, 42.000000)" fill="#445D6E">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="3" transform="translate(0.000000, 42.000000)" fill="#C0C9CE">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="2" transform="translate(105.000000, 0.000000)" fill="#445D6E">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="1">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings" fill="#C0C9CE"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape" fill="#445D6E"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape" fill="#445D6E"></path>
|
||||
</g>
|
||||
</g>
|
||||
<g id="repos" transform="translate(0.000000, 98.000000)">
|
||||
<g id="node" transform="translate(0.000000, 84.000000)">
|
||||
<text id="dev/node" font-family="OpenSans-Semibold, Open Sans" font-size="16" font-weight="500" fill="#82949E">
|
||||
<tspan x="33" y="19">dev/node</tspan>
|
||||
</text>
|
||||
<path d="M27.5661032,5.88472594 C28.0144632,6.52363904 28.1153442,7.24661966 27.8687462,8.05366778 L23.245033,23.2867012 C23.0320619,24.0040773 22.6033176,24.6065612 21.9588,25.0941528 C21.3142824,25.5817443 20.6277311,25.8255401 19.8991459,25.8255401 L4.38028296,25.8255401 C3.51718982,25.8255401 2.68492144,25.5256993 1.88347781,24.9260177 C1.08203418,24.3263361 0.524386344,23.5893443 0.210534294,22.7150421 C-0.0584817485,21.964039 -0.0696907502,21.2522674 0.176907289,20.5797273 C0.176907289,20.5348913 0.193720792,20.3835698 0.227347797,20.1257627 C0.260974802,19.8679557 0.283392806,19.6605891 0.294601808,19.5036631 C0.30581081,19.4139911 0.288997307,19.2934943 0.2441613,19.1421728 C0.199325293,18.9908513 0.18251179,18.8815635 0.193720792,18.8143095 C0.216138795,18.6910105 0.260974802,18.573316 0.328228813,18.4612259 C0.395482824,18.3491359 0.487957089,18.2174302 0.605651607,18.0661086 C0.723346126,17.9147871 0.815820391,17.7830813 0.883074402,17.6709913 C1.14088144,17.2450492 1.39308398,16.7322374 1.63968202,16.1325558 C1.88628006,15.5328742 2.05441509,15.0200624 2.1440871,14.5941203 C2.17771411,14.4820303 2.18051636,14.3138953 2.15249385,14.0897152 C2.12447135,13.8655352 2.1216691,13.7086092 2.1440871,13.6189372 C2.17771411,13.4956382 2.27299062,13.3387121 2.42991665,13.1481591 C2.58684267,12.9576061 2.68211919,12.8287025 2.71574619,12.7614485 C2.95113523,12.3579245 3.18652427,11.8423104 3.42191331,11.2146063 C3.65730234,10.5869022 3.79741487,10.0824971 3.84225087,9.70139105 C3.85345988,9.60051003 3.83944862,9.421166 3.80021712,9.16335896 C3.76098561,8.90555192 3.76378786,8.7486259 3.80862387,8.69258089 C3.85345988,8.54686386 3.9767589,8.37592659 4.17852093,8.17976905 C4.38028296,7.98361152 4.50358198,7.85751025 4.54841799,7.80146524 C4.76138902,7.5100312 4.99958031,7.03645087 5.26299185,6.38072427 C5.52640339,5.72499766 5.68052717,5.18416333 5.72536317,4.75822126 C5.73657218,4.66854924 5.71975867,4.52563447 5.67492267,4.32947694 C5.63008666,4.13331941 5.61887766,3.98480014 5.64129566,3.88391912 C5.66371366,3.79424711 5.71415417,3.69336609 5.79261718,3.58127607 C5.8710802,3.46918605 5.97196121,3.34028253 6.09526023,3.19456551 C6.21855925,3.04884849 6.31383577,2.93115397 6.38108978,2.84148195 C6.47076179,2.70697393 6.56323606,2.53603665 6.65851257,2.32867012 C6.75378909,2.12130359 6.8378566,1.92514606 6.91071511,1.74019753 C6.98357362,1.555249 7.07324564,1.35348697 7.17973116,1.13491143 C7.28621667,0.916335896 7.39550444,0.736991868 7.50759446,0.596879345 C7.61968448,0.456766823 7.76820375,0.325061052 7.95315228,0.201762032 C8.13810081,0.0784630125 8.33986284,0.0140112522 8.55843838,0.00840675134 C8.77701391,0.00280225045 9.0432277,0.0336270054 9.35707975,0.100881016 L9.34026625,0.151321524 C9.76620832,0.050440508 10.0520379,0 10.1977549,0 L22.9928304,0 C23.8222966,0 24.4612097,0.31385205 24.9095697,0.94155615 C25.3579298,1.56926025 25.4588108,2.29784537 25.2122128,3.1273115 L20.605313,18.3603449 C20.201789,19.6942161 19.8010672,20.554507 19.4031476,20.9412176 C19.005228,21.3279282 18.2850497,21.5212834 17.2426125,21.5212834 L2.63167868,21.5212834 C2.32903563,21.5212834 2.1160646,21.6053509 1.99276558,21.773486 C1.86946656,21.95283 1.86386206,22.1938235 1.97595208,22.4964666 C2.24496812,23.2810967 3.05201625,23.6734118 4.39709646,23.6734118 L19.9159594,23.6734118 C20.2410205,23.6734118 20.5548725,23.586542 20.8575156,23.4128025 C21.1601586,23.239063 21.3563162,23.0064762 21.4459882,22.7150421 L26.490039,6.12011498 C26.568502,5.87351694 26.5965245,5.55406039 26.5741065,5.16174532 C27.0000486,5.32988035 27.3307141,5.57087389 27.5661032,5.88472594 L27.5661032,5.88472594 Z M9.6765363,5.91835294 C9.6317003,6.06406997 9.6429093,6.19017124 9.71016331,6.29665675 C9.77741732,6.40314227 9.88950734,6.45638503 10.0464334,6.45638503 L20.269043,6.45638503 C20.41476,6.45638503 20.5576748,6.40314227 20.6977873,6.29665675 C20.8378998,6.19017124 20.9303741,6.06406997 20.9752101,5.91835294 L21.3282937,4.84228877 C21.3731297,4.69657175 21.3619207,4.57047048 21.2946667,4.46398496 C21.2274126,4.35749944 21.1153226,4.30425669 20.9583966,4.30425669 L10.735787,4.30425669 C10.5900699,4.30425669 10.4471552,4.35749944 10.3070427,4.46398496 C10.1669301,4.57047048 10.0744559,4.69657175 10.0296199,4.84228877 L9.6765363,5.91835294 Z M8.28101558,10.2226096 C8.23617957,10.3683267 8.24738858,10.4944279 8.31464259,10.6009134 C8.3818966,10.707399 8.49398662,10.7606417 8.65091264,10.7606417 L18.8735223,10.7606417 C19.0192393,10.7606417 19.1621541,10.707399 19.3022666,10.6009134 C19.4423791,10.4944279 19.5348534,10.3683267 19.5796894,10.2226096 L19.9327729,9.14654546 C19.9776089,9.00082844 19.9663999,8.87472717 19.8991459,8.76824165 C19.8318919,8.66175613 19.7198019,8.60851337 19.5628759,8.60851337 L9.34026625,8.60851337 C9.19454923,8.60851337 9.05163445,8.66175613 8.91152193,8.76824165 C8.77140941,8.87472717 8.67893514,9.00082844 8.63409914,9.14654546 L8.28101558,10.2226096 Z" id="Shape" fill="#E0E4E7"></path>
|
||||
</g>
|
||||
<g id="java" transform="translate(0.000000, 42.000000)">
|
||||
<text id="dev/java" font-family="OpenSans-Semibold, Open Sans" font-size="16" font-weight="500" fill="#82949E">
|
||||
<tspan x="33" y="19">dev/java</tspan>
|
||||
</text>
|
||||
<path d="M27.5661032,5.88472594 C28.0144632,6.52363904 28.1153442,7.24661966 27.8687462,8.05366778 L23.245033,23.2867012 C23.0320619,24.0040773 22.6033176,24.6065612 21.9588,25.0941528 C21.3142824,25.5817443 20.6277311,25.8255401 19.8991459,25.8255401 L4.38028296,25.8255401 C3.51718982,25.8255401 2.68492144,25.5256993 1.88347781,24.9260177 C1.08203418,24.3263361 0.524386344,23.5893443 0.210534294,22.7150421 C-0.0584817485,21.964039 -0.0696907502,21.2522674 0.176907289,20.5797273 C0.176907289,20.5348913 0.193720792,20.3835698 0.227347797,20.1257627 C0.260974802,19.8679557 0.283392806,19.6605891 0.294601808,19.5036631 C0.30581081,19.4139911 0.288997307,19.2934943 0.2441613,19.1421728 C0.199325293,18.9908513 0.18251179,18.8815635 0.193720792,18.8143095 C0.216138795,18.6910105 0.260974802,18.573316 0.328228813,18.4612259 C0.395482824,18.3491359 0.487957089,18.2174302 0.605651607,18.0661086 C0.723346126,17.9147871 0.815820391,17.7830813 0.883074402,17.6709913 C1.14088144,17.2450492 1.39308398,16.7322374 1.63968202,16.1325558 C1.88628006,15.5328742 2.05441509,15.0200624 2.1440871,14.5941203 C2.17771411,14.4820303 2.18051636,14.3138953 2.15249385,14.0897152 C2.12447135,13.8655352 2.1216691,13.7086092 2.1440871,13.6189372 C2.17771411,13.4956382 2.27299062,13.3387121 2.42991665,13.1481591 C2.58684267,12.9576061 2.68211919,12.8287025 2.71574619,12.7614485 C2.95113523,12.3579245 3.18652427,11.8423104 3.42191331,11.2146063 C3.65730234,10.5869022 3.79741487,10.0824971 3.84225087,9.70139105 C3.85345988,9.60051003 3.83944862,9.421166 3.80021712,9.16335896 C3.76098561,8.90555192 3.76378786,8.7486259 3.80862387,8.69258089 C3.85345988,8.54686386 3.9767589,8.37592659 4.17852093,8.17976905 C4.38028296,7.98361152 4.50358198,7.85751025 4.54841799,7.80146524 C4.76138902,7.5100312 4.99958031,7.03645087 5.26299185,6.38072427 C5.52640339,5.72499766 5.68052717,5.18416333 5.72536317,4.75822126 C5.73657218,4.66854924 5.71975867,4.52563447 5.67492267,4.32947694 C5.63008666,4.13331941 5.61887766,3.98480014 5.64129566,3.88391912 C5.66371366,3.79424711 5.71415417,3.69336609 5.79261718,3.58127607 C5.8710802,3.46918605 5.97196121,3.34028253 6.09526023,3.19456551 C6.21855925,3.04884849 6.31383577,2.93115397 6.38108978,2.84148195 C6.47076179,2.70697393 6.56323606,2.53603665 6.65851257,2.32867012 C6.75378909,2.12130359 6.8378566,1.92514606 6.91071511,1.74019753 C6.98357362,1.555249 7.07324564,1.35348697 7.17973116,1.13491143 C7.28621667,0.916335896 7.39550444,0.736991868 7.50759446,0.596879345 C7.61968448,0.456766823 7.76820375,0.325061052 7.95315228,0.201762032 C8.13810081,0.0784630125 8.33986284,0.0140112522 8.55843838,0.00840675134 C8.77701391,0.00280225045 9.0432277,0.0336270054 9.35707975,0.100881016 L9.34026625,0.151321524 C9.76620832,0.050440508 10.0520379,0 10.1977549,0 L22.9928304,0 C23.8222966,0 24.4612097,0.31385205 24.9095697,0.94155615 C25.3579298,1.56926025 25.4588108,2.29784537 25.2122128,3.1273115 L20.605313,18.3603449 C20.201789,19.6942161 19.8010672,20.554507 19.4031476,20.9412176 C19.005228,21.3279282 18.2850497,21.5212834 17.2426125,21.5212834 L2.63167868,21.5212834 C2.32903563,21.5212834 2.1160646,21.6053509 1.99276558,21.773486 C1.86946656,21.95283 1.86386206,22.1938235 1.97595208,22.4964666 C2.24496812,23.2810967 3.05201625,23.6734118 4.39709646,23.6734118 L19.9159594,23.6734118 C20.2410205,23.6734118 20.5548725,23.586542 20.8575156,23.4128025 C21.1601586,23.239063 21.3563162,23.0064762 21.4459882,22.7150421 L26.490039,6.12011498 C26.568502,5.87351694 26.5965245,5.55406039 26.5741065,5.16174532 C27.0000486,5.32988035 27.3307141,5.57087389 27.5661032,5.88472594 L27.5661032,5.88472594 Z M9.6765363,5.91835294 C9.6317003,6.06406997 9.6429093,6.19017124 9.71016331,6.29665675 C9.77741732,6.40314227 9.88950734,6.45638503 10.0464334,6.45638503 L20.269043,6.45638503 C20.41476,6.45638503 20.5576748,6.40314227 20.6977873,6.29665675 C20.8378998,6.19017124 20.9303741,6.06406997 20.9752101,5.91835294 L21.3282937,4.84228877 C21.3731297,4.69657175 21.3619207,4.57047048 21.2946667,4.46398496 C21.2274126,4.35749944 21.1153226,4.30425669 20.9583966,4.30425669 L10.735787,4.30425669 C10.5900699,4.30425669 10.4471552,4.35749944 10.3070427,4.46398496 C10.1669301,4.57047048 10.0744559,4.69657175 10.0296199,4.84228877 L9.6765363,5.91835294 Z M8.28101558,10.2226096 C8.23617957,10.3683267 8.24738858,10.4944279 8.31464259,10.6009134 C8.3818966,10.707399 8.49398662,10.7606417 8.65091264,10.7606417 L18.8735223,10.7606417 C19.0192393,10.7606417 19.1621541,10.707399 19.3022666,10.6009134 C19.4423791,10.4944279 19.5348534,10.3683267 19.5796894,10.2226096 L19.9327729,9.14654546 C19.9776089,9.00082844 19.9663999,8.87472717 19.8991459,8.76824165 C19.8318919,8.66175613 19.7198019,8.60851337 19.5628759,8.60851337 L9.34026625,8.60851337 C9.19454923,8.60851337 9.05163445,8.66175613 8.91152193,8.76824165 C8.77140941,8.87472717 8.67893514,9.00082844 8.63409914,9.14654546 L8.28101558,10.2226096 Z" id="Shape" fill="#E0E4E7"></path>
|
||||
</g>
|
||||
<g id="golang">
|
||||
<text id="dev/nginx" font-family="OpenSans-Semibold, Open Sans" font-size="16" font-weight="500" fill="#82949E">
|
||||
<tspan x="33" y="19">dev/nginx</tspan>
|
||||
</text>
|
||||
<path d="M27.5661032,5.88472594 C28.0144632,6.52363904 28.1153442,7.24661966 27.8687462,8.05366778 L23.245033,23.2867012 C23.0320619,24.0040773 22.6033176,24.6065612 21.9588,25.0941528 C21.3142824,25.5817443 20.6277311,25.8255401 19.8991459,25.8255401 L4.38028296,25.8255401 C3.51718982,25.8255401 2.68492144,25.5256993 1.88347781,24.9260177 C1.08203418,24.3263361 0.524386344,23.5893443 0.210534294,22.7150421 C-0.0584817485,21.964039 -0.0696907502,21.2522674 0.176907289,20.5797273 C0.176907289,20.5348913 0.193720792,20.3835698 0.227347797,20.1257627 C0.260974802,19.8679557 0.283392806,19.6605891 0.294601808,19.5036631 C0.30581081,19.4139911 0.288997307,19.2934943 0.2441613,19.1421728 C0.199325293,18.9908513 0.18251179,18.8815635 0.193720792,18.8143095 C0.216138795,18.6910105 0.260974802,18.573316 0.328228813,18.4612259 C0.395482824,18.3491359 0.487957089,18.2174302 0.605651607,18.0661086 C0.723346126,17.9147871 0.815820391,17.7830813 0.883074402,17.6709913 C1.14088144,17.2450492 1.39308398,16.7322374 1.63968202,16.1325558 C1.88628006,15.5328742 2.05441509,15.0200624 2.1440871,14.5941203 C2.17771411,14.4820303 2.18051636,14.3138953 2.15249385,14.0897152 C2.12447135,13.8655352 2.1216691,13.7086092 2.1440871,13.6189372 C2.17771411,13.4956382 2.27299062,13.3387121 2.42991665,13.1481591 C2.58684267,12.9576061 2.68211919,12.8287025 2.71574619,12.7614485 C2.95113523,12.3579245 3.18652427,11.8423104 3.42191331,11.2146063 C3.65730234,10.5869022 3.79741487,10.0824971 3.84225087,9.70139105 C3.85345988,9.60051003 3.83944862,9.421166 3.80021712,9.16335896 C3.76098561,8.90555192 3.76378786,8.7486259 3.80862387,8.69258089 C3.85345988,8.54686386 3.9767589,8.37592659 4.17852093,8.17976905 C4.38028296,7.98361152 4.50358198,7.85751025 4.54841799,7.80146524 C4.76138902,7.5100312 4.99958031,7.03645087 5.26299185,6.38072427 C5.52640339,5.72499766 5.68052717,5.18416333 5.72536317,4.75822126 C5.73657218,4.66854924 5.71975867,4.52563447 5.67492267,4.32947694 C5.63008666,4.13331941 5.61887766,3.98480014 5.64129566,3.88391912 C5.66371366,3.79424711 5.71415417,3.69336609 5.79261718,3.58127607 C5.8710802,3.46918605 5.97196121,3.34028253 6.09526023,3.19456551 C6.21855925,3.04884849 6.31383577,2.93115397 6.38108978,2.84148195 C6.47076179,2.70697393 6.56323606,2.53603665 6.65851257,2.32867012 C6.75378909,2.12130359 6.8378566,1.92514606 6.91071511,1.74019753 C6.98357362,1.555249 7.07324564,1.35348697 7.17973116,1.13491143 C7.28621667,0.916335896 7.39550444,0.736991868 7.50759446,0.596879345 C7.61968448,0.456766823 7.76820375,0.325061052 7.95315228,0.201762032 C8.13810081,0.0784630125 8.33986284,0.0140112522 8.55843838,0.00840675134 C8.77701391,0.00280225045 9.0432277,0.0336270054 9.35707975,0.100881016 L9.34026625,0.151321524 C9.76620832,0.050440508 10.0520379,0 10.1977549,0 L22.9928304,0 C23.8222966,0 24.4612097,0.31385205 24.9095697,0.94155615 C25.3579298,1.56926025 25.4588108,2.29784537 25.2122128,3.1273115 L20.605313,18.3603449 C20.201789,19.6942161 19.8010672,20.554507 19.4031476,20.9412176 C19.005228,21.3279282 18.2850497,21.5212834 17.2426125,21.5212834 L2.63167868,21.5212834 C2.32903563,21.5212834 2.1160646,21.6053509 1.99276558,21.773486 C1.86946656,21.95283 1.86386206,22.1938235 1.97595208,22.4964666 C2.24496812,23.2810967 3.05201625,23.6734118 4.39709646,23.6734118 L19.9159594,23.6734118 C20.2410205,23.6734118 20.5548725,23.586542 20.8575156,23.4128025 C21.1601586,23.239063 21.3563162,23.0064762 21.4459882,22.7150421 L26.490039,6.12011498 C26.568502,5.87351694 26.5965245,5.55406039 26.5741065,5.16174532 C27.0000486,5.32988035 27.3307141,5.57087389 27.5661032,5.88472594 L27.5661032,5.88472594 Z M9.6765363,5.91835294 C9.6317003,6.06406997 9.6429093,6.19017124 9.71016331,6.29665675 C9.77741732,6.40314227 9.88950734,6.45638503 10.0464334,6.45638503 L20.269043,6.45638503 C20.41476,6.45638503 20.5576748,6.40314227 20.6977873,6.29665675 C20.8378998,6.19017124 20.9303741,6.06406997 20.9752101,5.91835294 L21.3282937,4.84228877 C21.3731297,4.69657175 21.3619207,4.57047048 21.2946667,4.46398496 C21.2274126,4.35749944 21.1153226,4.30425669 20.9583966,4.30425669 L10.735787,4.30425669 C10.5900699,4.30425669 10.4471552,4.35749944 10.3070427,4.46398496 C10.1669301,4.57047048 10.0744559,4.69657175 10.0296199,4.84228877 L9.6765363,5.91835294 Z M8.28101558,10.2226096 C8.23617957,10.3683267 8.24738858,10.4944279 8.31464259,10.6009134 C8.3818966,10.707399 8.49398662,10.7606417 8.65091264,10.7606417 L18.8735223,10.7606417 C19.0192393,10.7606417 19.1621541,10.707399 19.3022666,10.6009134 C19.4423791,10.4944279 19.5348534,10.3683267 19.5796894,10.2226096 L19.9327729,9.14654546 C19.9776089,9.00082844 19.9663999,8.87472717 19.8991459,8.76824165 C19.8318919,8.66175613 19.7198019,8.60851337 19.5628759,8.60851337 L9.34026625,8.60851337 C9.19454923,8.60851337 9.05163445,8.66175613 8.91152193,8.76824165 C8.77140941,8.87472717 8.67893514,9.00082844 8.63409914,9.14654546 L8.28101558,10.2226096 Z" id="Shape" fill="#E0E4E7"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 111 KiB |
After Width: | Height: | Size: 308 KiB |
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="250px" viewBox="0 0 740 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background: #FFFFFF;">
|
||||
<!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>cache-overview-1</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="cache-overview-1">
|
||||
<g id="all" transform="translate(126.000000, 3.000000)">
|
||||
<g id="right" transform="translate(288.000000, 0.000000)">
|
||||
<text id="Asia-office" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="11.025" y="234.009524">Asia office</tspan>
|
||||
</text>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="200" height="245" rx="2"></rect>
|
||||
<g id="users" transform="translate(57.000000, 34.000000)" fill="#82949E">
|
||||
<path d="M69,28 C73.69625,28 77.5,24.185625 77.5,19.5 C77.5,14.80375 73.69625,11 69,11 C64.30375,11 60.5,14.80375 60.5,19.5 C60.5,24.185625 64.30375,28 69,28 L69,28 Z M69,32.25 C63.336875,32.25 52,35.086875 52,40.75 L52,45 L86,45 L86,40.75 C86,35.086875 74.663125,32.25 69,32.25 L69,32.25 Z" id="user-copy-2"></path>
|
||||
<path d="M17,28 C21.69625,28 25.5,24.185625 25.5,19.5 C25.5,14.80375 21.69625,11 17,11 C12.30375,11 8.5,14.80375 8.5,19.5 C8.5,24.185625 12.30375,28 17,28 L17,28 Z M17,32.25 C11.336875,32.25 3.55271368e-15,35.086875 3.55271368e-15,40.75 L3.55271368e-15,45 L34,45 L34,40.75 C34,35.086875 22.663125,32.25 17,32.25 L17,32.25 Z" id="user-copy"></path>
|
||||
<path d="M43,26.5 C50.320625,26.5 56.25,20.5540625 56.25,13.25 C56.25,5.929375 50.320625,0 43,0 C35.679375,0 29.75,5.929375 29.75,13.25 C29.75,20.5540625 35.679375,26.5 43,26.5 L43,26.5 Z M43,33.125 C34.1721875,33.125 16.5,37.5471875 16.5,46.375 L16.5,53 L69.5,53 L69.5,46.375 C69.5,37.5471875 51.8278125,33.125 43,33.125 L43,33.125 Z" id="user" stroke="#FFFFFF" stroke-width="2"></path>
|
||||
</g>
|
||||
<g id="terminal" transform="translate(17.000000, 86.000000)">
|
||||
<rect id="Rectangle-2" fill="#254356" x="0" y="0" width="170" height="102" rx="2"></rect>
|
||||
<rect id="Rectangle-2-Copy" fill="#82949E" x="0" y="0" width="170" height="20" rx="2"></rect>
|
||||
<text id=">-docker-pull-dtr.ex" font-family="CourierNewPS-BoldMT, Courier New" font-size="13" font-weight="bold" line-spacing="18" fill="#E0E4E7">
|
||||
<tspan x="11" y="38">> docker pull</tspan>
|
||||
<tspan x="11" y="56"></tspan>
|
||||
<tspan x="11" y="74">dtr.example.org/</tspan>
|
||||
<tspan x="11" y="92">website/ui:3-stable</tspan>
|
||||
</text>
|
||||
<text id="localhost" font-family="CourierNewPS-BoldMT, Courier New" font-size="12" font-weight="bold" fill="#254356">
|
||||
<tspan x="51" y="13">localhost</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow" transform="translate(208.000000, 112.000000)">
|
||||
<circle id="Oval" fill="#E0E4E7" cx="4" cy="10" r="4"></circle>
|
||||
<path d="M4,10 C4,10 14.5912352,0.456535725 36.0154397,0.456535725 C57.4396442,0.456535725 68.0308794,10 68.0308794,10" id="Path-3" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</g>
|
||||
<g id="slow" transform="translate(229.000000, 83.000000)">
|
||||
<circle id="Oval-Copy" fill="#E0E4E7" cx="16" cy="12" r="12"></circle>
|
||||
<text id="1" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold" fill="#FFFFFF">
|
||||
<tspan x="13" y="19">!</tspan>
|
||||
</text>
|
||||
<text font-family="OpenSans-Semibold, Open Sans" font-size="14" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="0" y="49">slow</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="middle">
|
||||
<text id="DTR-cluster-(US)" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="11.025" y="234.009524">DTR cluster (US)</tspan>
|
||||
</text>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="200" height="245" rx="2"></rect>
|
||||
<g id="website-dev" transform="translate(31.000000, 47.000000)">
|
||||
<text id="tags" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="38" y="40">1</tspan>
|
||||
<tspan x="38" y="57">2</tspan>
|
||||
<tspan x="38" y="74">3-stable</tspan>
|
||||
</text>
|
||||
<path d="M31.5,31.5 L31.5,73.5" id="Line" stroke="#E0E4E7" stroke-linecap="square"></path>
|
||||
<text id="website/ui" font-family="OpenSans-Semibold, Open Sans" font-size="14" font-weight="500" fill="#82949E">
|
||||
<tspan x="31" y="19">website/ui</tspan>
|
||||
</text>
|
||||
<text id="" font-family="FontAwesome" font-size="26" font-weight="normal" fill="#8F9EA8">
|
||||
<tspan x="0" y="22"></tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.8 KiB |
|
@ -0,0 +1,90 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="250px" viewBox="0 0 740 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background: #FFFFFF;">
|
||||
<!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>cache-overview-2</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="cache-overview-2">
|
||||
<g id="all" transform="translate(16.000000, 3.000000)">
|
||||
<g id="right" transform="translate(410.000000, 0.000000)">
|
||||
<text id="Asia-office" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="11.025" y="234.009524">Asia office</tspan>
|
||||
</text>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="300" height="245" rx="2"></rect>
|
||||
<g id="Group" transform="translate(64.000000, 19.000000)">
|
||||
<g id="arrow-3" transform="translate(97.000000, 52.000000)">
|
||||
<circle id="Oval" fill="#E0E4E7" cx="4" cy="86" r="4"></circle>
|
||||
<path d="M4,87 C4,87 14.695432,65.3896645 14.695432,43.9976782 C14.695432,22.6056918 4,0.995356351 4,0.995356351" id="Path-3" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<text id="3.-pull-image-layers" font-family="OpenSans-Semibold, Open Sans" font-size="14" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="35.5" y="41">3. pull image</tspan>
|
||||
<tspan x="35.5" y="60">layers</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="users" transform="translate(0.000000, 128.000000)" fill="#82949E">
|
||||
<path d="M69,28 C73.69625,28 77.5,24.185625 77.5,19.5 C77.5,14.80375 73.69625,11 69,11 C64.30375,11 60.5,14.80375 60.5,19.5 C60.5,24.185625 64.30375,28 69,28 L69,28 Z M69,32.25 C63.336875,32.25 52,35.086875 52,40.75 L52,45 L86,45 L86,40.75 C86,35.086875 74.663125,32.25 69,32.25 L69,32.25 Z" id="user-copy-2"></path>
|
||||
<path d="M17,28 C21.69625,28 25.5,24.185625 25.5,19.5 C25.5,14.80375 21.69625,11 17,11 C12.30375,11 8.5,14.80375 8.5,19.5 C8.5,24.185625 12.30375,28 17,28 L17,28 Z M17,32.25 C11.336875,32.25 3.55271368e-15,35.086875 3.55271368e-15,40.75 L3.55271368e-15,45 L34,45 L34,40.75 C34,35.086875 22.663125,32.25 17,32.25 L17,32.25 Z" id="user-copy"></path>
|
||||
<path d="M43,26.5 C50.320625,26.5 56.25,20.5540625 56.25,13.25 C56.25,5.929375 50.320625,0 43,0 C35.679375,0 29.75,5.929375 29.75,13.25 C29.75,20.5540625 35.679375,26.5 43,26.5 L43,26.5 Z M43,33.125 C34.1721875,33.125 16.5,37.5471875 16.5,46.375 L16.5,53 L69.5,53 L69.5,46.375 C69.5,37.5471875 51.8278125,33.125 43,33.125 L43,33.125 Z" id="user" stroke="#FFFFFF" stroke-width="2"></path>
|
||||
</g>
|
||||
<g id="server" transform="translate(9.000000, 0.000000)">
|
||||
<text id="cache-asia" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="3" y="70">cache-asia</tspan>
|
||||
</text>
|
||||
<g id="dials-3" transform="translate(3.000000, 43.000000)" fill="#82949E">
|
||||
<circle id="Oval-4-Copy" cx="11" cy="3" r="3"></circle>
|
||||
<circle id="Oval-4" cx="3" cy="3" r="3"></circle>
|
||||
</g>
|
||||
<rect id="3" stroke="#82949E" stroke-width="2" x="0" y="38" width="66" height="16" rx="2"></rect>
|
||||
<g id="dials-2" transform="translate(3.000000, 24.000000)" fill="#82949E">
|
||||
<circle id="Oval-4-Copy" cx="11" cy="3" r="3"></circle>
|
||||
<circle id="Oval-4" cx="3" cy="3" r="3"></circle>
|
||||
</g>
|
||||
<rect id="2" stroke="#82949E" stroke-width="2" x="0" y="19" width="66" height="16" rx="2"></rect>
|
||||
<g id="dials" transform="translate(3.000000, 5.000000)" fill="#82949E">
|
||||
<circle id="Oval-4-Copy" cx="11" cy="3" r="3"></circle>
|
||||
<circle id="Oval-4" cx="3" cy="3" r="3"></circle>
|
||||
</g>
|
||||
<rect id="1" stroke="#82949E" stroke-width="2" x="0" y="0" width="66" height="16" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrows" transform="translate(282.000000, 51.000000)">
|
||||
<g id="arrow-1" transform="translate(16.000000, 0.000000)">
|
||||
<circle id="Oval" fill="#E0E4E7" cx="67" cy="9" r="4"></circle>
|
||||
<path d="M4,9 C4,9 14.5912352,0.109468108 36.0154397,0.109468108 C57.4396442,0.109468108 68.0308794,9 68.0308794,9" id="Path-3" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<text id="2.-redirect" font-family="OpenSans-Semibold, Open Sans" font-size="14" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="0" y="34">2. redirect</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrow-2" transform="translate(0.000000, 115.000000)">
|
||||
<circle id="Oval" fill="#E0E4E7" cx="17" cy="4" r="4"></circle>
|
||||
<path d="M17,4 C17,4 27.5912352,14.1507354 49.0154397,14.1507354 C70.4396442,14.1507354 81.0308794,4 81.0308794,4" id="Path-3" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<text id="1.-authenticate" font-family="OpenSans-Semibold, Open Sans" font-size="14" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="0" y="36">1. authenticate</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="middle">
|
||||
<text id="DTR-cluster-(US)---d" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="10.025" y="234.009524">DTR cluster (US) - dtr.example.org</tspan>
|
||||
</text>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="260" height="245" rx="2"></rect>
|
||||
<g id="website-dev" transform="translate(79.000000, 47.000000)">
|
||||
<text id="tags" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="38" y="40">1</tspan>
|
||||
<tspan x="38" y="57">2</tspan>
|
||||
<tspan x="38" y="74">3-stable</tspan>
|
||||
</text>
|
||||
<path d="M31.5,31.5 L31.5,73.5" id="Line" stroke="#E0E4E7" stroke-linecap="square"></path>
|
||||
<text id="website/ui" font-family="OpenSans-Semibold, Open Sans" font-size="14" font-weight="500" fill="#82949E">
|
||||
<tspan x="31" y="19">website/ui</tspan>
|
||||
</text>
|
||||
<text id="" font-family="FontAwesome" font-size="26" font-weight="normal" fill="#8F9EA8">
|
||||
<tspan x="0" y="22"></tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 7.7 KiB |
|
@ -0,0 +1,78 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="250px" viewBox="0 0 740 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background: #FFFFFF;">
|
||||
<!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>cache-overview-3</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="cache-overview-3">
|
||||
<g id="all" transform="translate(10.000000, 3.000000)">
|
||||
<g id="prod" transform="translate(540.000000, 0.000000)">
|
||||
<text id="DTR-at-prod.example." font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="9.025" y="234.009524">DTR at prod.example.org</tspan>
|
||||
</text>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="180" height="245" rx="2"></rect>
|
||||
<g id="user-1" transform="translate(14.000000, 78.000000)">
|
||||
<g id="widgets" transform="translate(77.000000, 15.000000)" fill="#E0E4E7">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape"></path>
|
||||
</g>
|
||||
<text id="dev-team" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="0" y="64">dev team</tspan>
|
||||
</text>
|
||||
<path d="M27,25 C33.90625,25 39.5,19.390625 39.5,12.5 C39.5,5.59375 33.90625,0 27,0 C20.09375,0 14.5,5.59375 14.5,12.5 C14.5,19.390625 20.09375,25 27,25 L27,25 Z M27,31.25 C18.671875,31.25 2,35.421875 2,43.75 L2,50 L52,50 L52,43.75 C52,35.421875 35.328125,31.25 27,31.25 L27,31.25 Z" id="user" stroke="#FFFFFF" stroke-width="2" fill="#82949E"></path>
|
||||
</g>
|
||||
</g>
|
||||
<g id="qa" transform="translate(270.000000, 0.000000)">
|
||||
<text id="DTR-at-qa.example.or" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="9.025" y="234.009524">DTR at qa.example.org</tspan>
|
||||
</text>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="180" height="245" rx="2"></rect>
|
||||
<g id="user-1" transform="translate(14.000000, 78.000000)">
|
||||
<g id="widgets" transform="translate(77.000000, 15.000000)">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings" fill="#E0E4E7"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape" fill="#82949E"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape" fill="#E0E4E7"></path>
|
||||
</g>
|
||||
<text id="dev-team" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="0" y="64">dev team</tspan>
|
||||
</text>
|
||||
<path d="M27,25 C33.90625,25 39.5,19.390625 39.5,12.5 C39.5,5.59375 33.90625,0 27,0 C20.09375,0 14.5,5.59375 14.5,12.5 C14.5,19.390625 20.09375,25 27,25 L27,25 Z M27,31.25 C18.671875,31.25 2,35.421875 2,43.75 L2,50 L52,50 L52,43.75 C52,35.421875 35.328125,31.25 27,31.25 L27,31.25 Z" id="user" stroke="#FFFFFF" stroke-width="2" fill="#82949E"></path>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-2" transform="translate(462.000000, 101.000000)">
|
||||
<circle id="Oval" fill="#E0E4E7" cx="63" cy="38" r="4"></circle>
|
||||
<path d="M0,38 C0,38 10.5912352,29.1094681 32.0154397,29.1094681 C53.4396442,29.1094681 64.0308794,38 64.0308794,38" id="Path-3" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<text id="promote" font-family="OpenSans-Semibold, Open Sans" font-size="14" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="4" y="15">promote</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dev">
|
||||
<text id="DTR-at-dev.example.o" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="8.025" y="234.009524">DTR at dev.example.org</tspan>
|
||||
</text>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="180" height="245" rx="2"></rect>
|
||||
<g id="user-1" transform="translate(14.000000, 78.000000)">
|
||||
<g id="widgets" transform="translate(77.000000, 15.000000)">
|
||||
<path d="M75,11.3466667 L75,8.65333333 C73.6241667,8.16416667 72.755,8.02666667 72.3175,6.97083333 L72.3175,6.97 C71.8783333,5.91083333 72.4008333,5.19166667 73.0233333,3.88083333 L71.1191667,1.97666667 C69.8183333,2.595 69.0916667,3.1225 68.03,2.6825 L68.0291667,2.6825 C66.9716667,2.24416667 66.8333333,1.36916667 66.3466667,0 L63.6533333,0 C63.1683333,1.3625 63.0291667,2.24333333 61.9708333,2.6825 L61.97,2.6825 C60.9108333,3.1225 60.1933333,2.60083333 58.8808333,1.97666667 L56.9766667,3.88083333 C57.5975,5.1875 58.1225,5.90916667 57.6825,6.97 C57.2433333,8.02916667 56.3625,8.16833333 55,8.65333333 L55,11.3466667 C56.36,11.83 57.2433333,11.9708333 57.6825,13.0291667 C58.1241667,14.0975 57.5875,14.8341667 56.9766667,16.1183333 L58.8808333,18.0233333 C60.1825,17.4041667 60.9091667,16.8775 61.97,17.3175 L61.9708333,17.3175 C63.0291667,17.7558333 63.1675,18.6333333 63.6533333,20 L66.3466667,20 C66.8316667,18.6366667 66.9716667,17.7583333 68.0358333,17.315 L68.0366667,17.315 C69.0883333,16.8783333 69.8033333,17.3991667 71.1183333,18.0241667 L73.0225,16.1191667 C72.4025,14.8166667 71.8766667,14.0916667 72.3158333,13.0308333 C72.755,11.9716667 73.6391667,11.8308333 75,11.3466667 L75,11.3466667 Z M65,13.3333333 C63.1591667,13.3333333 61.6666667,11.8408333 61.6666667,10 C61.6666667,8.15916667 63.1591667,6.66666667 65,6.66666667 C66.8408333,6.66666667 68.3333333,8.15916667 68.3333333,10 C68.3333333,11.8408333 66.8408333,13.3333333 65,13.3333333 L65,13.3333333 Z" id="settings" fill="#E0E4E7"></path>
|
||||
<path d="M12.09,1 C4.5,1 0,10 0,10 C0,10 4.5,19 12.09,19 C19.5,19 24,10 24,10 C24,10 19.5,1 12.09,1 L12.09,1 Z M12,16 C8.7,16 6,13.33 6,10 C6,6.7 8.7,4 12,4 C15.33,4 18,6.7 18,10 C18,13.33 15.33,16 12,16 L12,16 Z M15,10 C15,11.665 13.665,13 12,13 C10.335,13 9,11.665 9,10 C9,8.335 10.335,7 12,7 C13.665,7 15,8.335 15,10 L15,10 Z" id="Shape" fill="#82949E"></path>
|
||||
<path d="M31,15.0272045 L31,19 L34.9727791,19 L45.5668567,8.40587876 L41.5940776,4.4330833 L31,15.0272045 L31,15.0272045 Z M34.9727791,17.6757348 L32.3242597,17.6757348 L32.3242597,15.0272045 L33.6485194,15.0272045 L33.6485194,16.3514697 L34.9727791,16.3514697 L34.9727791,17.6757348 L34.9727791,17.6757348 Z M48.612654,5.36006891 L46.8911164,7.08161361 L42.9183373,3.10881814 L44.6398749,1.38727344 C44.8873057,1.13933381 45.2231988,1 45.573478,1 C45.9237573,1 46.2596503,1.13933381 46.5070811,1.38727344 L48.612654,3.49285504 C49.1291153,4.00931845 49.1291153,4.8436055 48.612654,5.36006891 L48.612654,5.36006891 Z" id="Shape" fill="#82949E"></path>
|
||||
</g>
|
||||
<text id="dev-team" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#82949E">
|
||||
<tspan x="0" y="64">dev team</tspan>
|
||||
</text>
|
||||
<path d="M27,25 C33.90625,25 39.5,19.390625 39.5,12.5 C39.5,5.59375 33.90625,0 27,0 C20.09375,0 14.5,5.59375 14.5,12.5 C14.5,19.390625 20.09375,25 27,25 L27,25 Z M27,31.25 C18.671875,31.25 2,35.421875 2,43.75 L2,50 L52,50 L52,43.75 C52,35.421875 35.328125,31.25 27,31.25 L27,31.25 Z" id="user" stroke="#FFFFFF" stroke-width="2" fill="#82949E"></path>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-1" transform="translate(193.000000, 101.000000)">
|
||||
<circle id="Oval" fill="#E0E4E7" cx="63" cy="38" r="4"></circle>
|
||||
<path d="M0,38 C0,38 10.5912352,29.1094681 32.0154397,29.1094681 C53.4396442,29.1094681 64.0308794,38 64.0308794,38" id="Path-3" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<text id="promote" font-family="OpenSans-Semibold, Open Sans" font-size="14" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="4" y="15">promote</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
|
@ -0,0 +1,347 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="550px" viewBox="0 0 740 550" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>deploy-caches-ha-1</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<circle id="path-1" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-2" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-3" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-4" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-5" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-6" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-7" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-8" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-9" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-10" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-11" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-12" cx="4" cy="4" r="4"></circle>
|
||||
</defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="deploy-caches-ha-1">
|
||||
<g id="asia" transform="translate(11.000000, 318.000000)">
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="42" width="336" height="184" rx="2"></rect>
|
||||
<text id="Asia-datacenter" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="10.8218828" y="218.009524">Asia datacenter</tspan>
|
||||
</text>
|
||||
<g id="storage" transform="translate(15.000000, 143.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="31" width="309" height="22" rx="2"></rect>
|
||||
<text id="shared-storage" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="118.519531" y="46">shared storage</tspan>
|
||||
</text>
|
||||
<g id="arrows" transform="translate(44.000000, 0.000000)">
|
||||
<g id="arrow-copy-2" transform="translate(218.500000, 17.000000) rotate(-90.000000) translate(-218.500000, -17.000000) translate(202.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#00B6B5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#00B6B5" fill-rule="evenodd" xlink:href="#path-1"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-3" transform="translate(111.500000, 17.000000) rotate(-90.000000) translate(-111.500000, -17.000000) translate(95.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#00B6B5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#00B6B5" fill-rule="evenodd" xlink:href="#path-2"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-4" transform="translate(4.500000, 17.000000) rotate(-90.000000) translate(-4.500000, -17.000000) translate(-12.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#00B6B5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#00B6B5" fill-rule="evenodd" xlink:href="#path-3"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="nodes" transform="translate(14.000000, 54.000000)">
|
||||
<g id="node-1-copy-4">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-cache" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7836914" y="15">DTR cache</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-5" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-cache" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7836914" y="15">DTR cache</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-6" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-cache" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7836914" y="15">DTR cache</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="lb" transform="translate(15.000000, 0.000000)">
|
||||
<g id="main">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="309" height="22" rx="2"></rect>
|
||||
<text id="your-load-balancer" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="111.437988" y="15">your load balancer</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrows" transform="translate(43.000000, 21.000000)">
|
||||
<g id="arrow-copy-3" transform="translate(218.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-218.500000, -17.000000) translate(202.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-4"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy" transform="translate(111.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-111.500000, -17.000000) translate(95.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-2" transform="translate(4.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-4.500000, -17.000000) translate(-12.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-6"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="us" transform="translate(202.000000, 6.000000)">
|
||||
<text id="US-datacenter" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="10.8218828" y="267.009524">US datacenter</tspan>
|
||||
</text>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="93" width="336" height="181" rx="2"></rect>
|
||||
<g id="storage" transform="translate(14.000000, 194.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="31" width="309" height="22" rx="2"></rect>
|
||||
<text id="shared-storage" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="118.519531" y="46">shared storage</tspan>
|
||||
</text>
|
||||
<g id="arrows" transform="translate(44.000000, 0.000000)">
|
||||
<g id="arrow-copy-2" transform="translate(218.500000, 17.000000) rotate(-90.000000) translate(-218.500000, -17.000000) translate(202.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-7"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-3" transform="translate(111.500000, 17.000000) rotate(-90.000000) translate(-111.500000, -17.000000) translate(95.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-8"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-4" transform="translate(4.500000, 17.000000) rotate(-90.000000) translate(-4.500000, -17.000000) translate(-12.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-9"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="nodes" transform="translate(14.000000, 105.000000)">
|
||||
<g id="node-1-copy-4">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-agent" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7373047" y="15">UCP agent</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-replica" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="21.5986328" y="15">DTR replica</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-5" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-agent" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7373047" y="15">UCP agent</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-replica" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="21.5986328" y="15">DTR replica</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-6" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-agent" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7373047" y="15">UCP agent</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-replica" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="21.5986328" y="15">DTR replica</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="lb" transform="translate(15.000000, 51.000000)">
|
||||
<g id="main">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="309" height="22" rx="2"></rect>
|
||||
<text id="your-load-balancer" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="111.437988" y="15">your load balancer</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrows" transform="translate(43.000000, 21.000000)">
|
||||
<g id="arrow-copy-3" transform="translate(218.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-218.500000, -17.000000) translate(202.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-10"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy" transform="translate(111.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-111.500000, -17.000000) translate(95.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-11"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-2" transform="translate(4.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-4.500000, -17.000000) translate(-12.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-12"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="users" transform="translate(136.000000, 0.000000)" fill="#82949E">
|
||||
<g id="user">
|
||||
<text id="UI" font-family="OpenSans, Open Sans" font-size="12" font-weight="normal">
|
||||
<tspan x="7" y="41">UI</tspan>
|
||||
</text>
|
||||
<path d="M13,13 C16.59125,13 19.5,10.083125 19.5,6.5 C19.5,2.90875 16.59125,0 13,0 C9.40875,0 6.5,2.90875 6.5,6.5 C6.5,10.083125 9.40875,13 13,13 L13,13 Z M13,16.25 C8.669375,16.25 0,18.419375 0,22.75 L0,26 L26,26 L26,22.75 C26,18.419375 17.330625,16.25 13,16.25 L13,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="user-copy" transform="translate(42.000000, 0.000000)">
|
||||
<text id="CLI" font-family="OpenSans, Open Sans" font-size="12" font-weight="normal">
|
||||
<tspan x="4" y="41">CLI</tspan>
|
||||
</text>
|
||||
<path d="M13,13 C16.59125,13 19.5,10.083125 19.5,6.5 C19.5,2.90875 16.59125,0 13,0 C9.40875,0 6.5,2.90875 6.5,6.5 C6.5,10.083125 9.40875,13 13,13 L13,13 Z M13,16.25 C8.669375,16.25 0,18.419375 0,22.75 L0,26 L26,26 L26,22.75 C26,18.419375 17.330625,16.25 13,16.25 L13,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-1" transform="translate(68.000000, 203.000000)">
|
||||
<circle id="Oval" fill="#E0E4E7" cx="96" cy="4" r="4"></circle>
|
||||
<path d="M96.0764013,88.0046436 C96.0764013,88.0046436 90,66.3943082 90,45.0023218 C90,23.6103355 96.0764013,2 96.0764013,2" id="Path-3" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<text id="pull-from-upstream" font-family="OpenSans-Semibold, Open Sans" font-size="14" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="0" y="41">pull from</tspan>
|
||||
<tspan x="0" y="60">upstream</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="europe" transform="translate(381.000000, 318.000000)">
|
||||
<rect fill="#E0E4E7" x="0" y="0" width="336" height="226" rx="4"></rect>
|
||||
<text id="Europe-datacenter" font-family="OpenSans, Open Sans" font-size="26" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="55.3291016" y="183">Europe datacenter</tspan>
|
||||
</text>
|
||||
<text id="+" font-family="OpenSans, Open Sans" font-size="100" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="139.411133" y="133">+</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 27 KiB |
|
@ -0,0 +1,274 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="550px" viewBox="0 0 740 550" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>deploy-cache-simple-3</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<circle id="path-1" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-2" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-3" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-4" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-5" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-6" cx="4" cy="4" r="4"></circle>
|
||||
</defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="deploy-cache-simple-3">
|
||||
<g id="all" transform="translate(12.000000, 10.000000)">
|
||||
<g id="europe" transform="translate(381.000000, 344.000000)">
|
||||
<rect fill="#E0E4E7" x="0" y="5" width="336" height="178" rx="4"></rect>
|
||||
<text id="Europe-datacenter" font-family="OpenSans, Open Sans" font-size="26" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="55.3291016" y="147">Europe datacenter</tspan>
|
||||
</text>
|
||||
<text id="+" font-family="OpenSans, Open Sans" font-size="100" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="139.411133" y="107">+</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="asia" transform="translate(0.000000, 350.000000)">
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="336" height="175.781832" rx="2"></rect>
|
||||
<text id="Asia-datacenter" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="10.8218828" y="166.009524">Asia datacenter</tspan>
|
||||
</text>
|
||||
<text id="dtr.cache=true" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="121" y="131.009524">dtr.cache=true</tspan>
|
||||
</text>
|
||||
<g id="nodes" transform="translate(14.000000, 12.000000)">
|
||||
<g id="node-1-copy-4">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-6" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node-1-copy-5" transform="translate(121.000000, 12.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-cache" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7836914" y="15">DTR cache</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-1" transform="translate(57.000000, 237.000000)">
|
||||
<circle id="Oval" fill="#E0E4E7" cx="96" cy="4" r="4"></circle>
|
||||
<path d="M96.0764013,88.0046436 C96.0764013,88.0046436 90,66.3943082 90,45.0023218 C90,23.6103355 96.0764013,2 96.0764013,2" id="Path-3" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<text id="pull-from-upstream" font-family="OpenSans-Semibold, Open Sans" font-size="14" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="0" y="41">pull from</tspan>
|
||||
<tspan x="0" y="60">upstream</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="us" transform="translate(191.000000, 0.000000)">
|
||||
<text id="US-datacenter---dtr." font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="10.8218828" y="267.009524">US datacenter - dtr.example.org</tspan>
|
||||
</text>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="93" width="336" height="181" rx="2"></rect>
|
||||
<g id="storage" transform="translate(14.000000, 194.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="31" width="309" height="22" rx="2"></rect>
|
||||
<text id="shared-storage" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="118.519531" y="46">shared storage</tspan>
|
||||
</text>
|
||||
<g id="arrows" transform="translate(44.000000, 0.000000)">
|
||||
<g id="arrow-copy-2" transform="translate(218.500000, 17.000000) rotate(-90.000000) translate(-218.500000, -17.000000) translate(202.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-1"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-3" transform="translate(111.500000, 17.000000) rotate(-90.000000) translate(-111.500000, -17.000000) translate(95.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-2"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-4" transform="translate(4.500000, 17.000000) rotate(-90.000000) translate(-4.500000, -17.000000) translate(-12.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-3"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="nodes" transform="translate(14.000000, 105.000000)">
|
||||
<g id="node-1-copy-4">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-agent" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7373047" y="15">UCP agent</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-replica" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="21.5986328" y="15">DTR replica</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-5" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-agent" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7373047" y="15">UCP agent</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-replica" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="21.5986328" y="15">DTR replica</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-6" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-agent" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7373047" y="15">UCP agent</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-replica" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="21.5986328" y="15">DTR replica</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="lb" transform="translate(15.000000, 51.000000)">
|
||||
<g id="main">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="309" height="22" rx="2"></rect>
|
||||
<text id="your-load-balancer" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="111.437988" y="15">your load balancer</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrows" transform="translate(43.000000, 21.000000)">
|
||||
<g id="arrow-copy-3" transform="translate(218.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-218.500000, -17.000000) translate(202.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-4"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy" transform="translate(111.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-111.500000, -17.000000) translate(95.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-2" transform="translate(4.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-4.500000, -17.000000) translate(-12.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-6"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="users" transform="translate(136.000000, 0.000000)" fill="#82949E">
|
||||
<g id="user">
|
||||
<text id="UI" font-family="OpenSans, Open Sans" font-size="12" font-weight="normal">
|
||||
<tspan x="7" y="41">UI</tspan>
|
||||
</text>
|
||||
<path d="M13,13 C16.59125,13 19.5,10.083125 19.5,6.5 C19.5,2.90875 16.59125,0 13,0 C9.40875,0 6.5,2.90875 6.5,6.5 C6.5,10.083125 9.40875,13 13,13 L13,13 Z M13,16.25 C8.669375,16.25 0,18.419375 0,22.75 L0,26 L26,26 L26,22.75 C26,18.419375 17.330625,16.25 13,16.25 L13,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="user-copy" transform="translate(42.000000, 0.000000)">
|
||||
<text id="CLI" font-family="OpenSans, Open Sans" font-size="12" font-weight="normal">
|
||||
<tspan x="4" y="41">CLI</tspan>
|
||||
</text>
|
||||
<path d="M13,13 C16.59125,13 19.5,10.083125 19.5,6.5 C19.5,2.90875 16.59125,0 13,0 C9.40875,0 6.5,2.90875 6.5,6.5 C6.5,10.083125 9.40875,13 13,13 L13,13 Z M13,16.25 C8.669375,16.25 0,18.419375 0,22.75 L0,26 L26,26 L26,22.75 C26,18.419375 17.330625,16.25 13,16.25 L13,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 344 KiB |
After Width: | Height: | Size: 262 KiB |
After Width: | Height: | Size: 256 KiB |
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="220px" viewBox="0 0 740 220" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>deploy-cache-simple-1</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="deploy-cache-simple-1">
|
||||
<g id="Group" transform="translate(265.000000, 20.000000)">
|
||||
<g id="lines" transform="translate(52.000000, 39.000000)" stroke="#E0E4E7" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
|
||||
<path d="M117.5,93.5 L53.5,0.5" id="Line"></path>
|
||||
<path d="M0.5,79.5 L53.5,0.5" id="Line-Copy"></path>
|
||||
</g>
|
||||
<g id="cache-eur" transform="translate(130.000000, 100.000000)">
|
||||
<circle id="Oval-2" fill="#1488C6" cx="40" cy="40" r="40"></circle>
|
||||
<text id="DTR-cache-(Europe)" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#FFFFFF">
|
||||
<tspan x="10.1201172" y="36">DTR cache</tspan>
|
||||
<tspan x="15.5927734" y="53">(Europe)</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="cache-as" transform="translate(0.000000, 100.000000)">
|
||||
<circle id="Oval-2" fill="#1488C6" cx="40" cy="40" r="40"></circle>
|
||||
<text id="DTR-cache-(Asia)" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#FFFFFF">
|
||||
<tspan x="10.1201172" y="36">DTR cache</tspan>
|
||||
<tspan x="24.15625" y="53">(Asia)</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(65.000000, 0.000000)">
|
||||
<circle id="Oval-2" fill="#1488C6" cx="40" cy="40" r="40"></circle>
|
||||
<text id="DTR-cluster-(US)" font-family="OpenSans-Semibold, Open Sans" font-size="12" font-weight="500" fill="#FFFFFF">
|
||||
<tspan x="7.03222656" y="36">DTR cluster</tspan>
|
||||
<tspan x="28.4453125" y="53">(US)</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
|
@ -0,0 +1,341 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="550px" viewBox="0 0 740 550" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>deploy-cache-simple-2</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<circle id="path-1" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-2" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-3" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-4" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-5" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-6" cx="4" cy="4" r="4"></circle>
|
||||
</defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="deploy-cache-simple-2">
|
||||
<g id="all" transform="translate(12.000000, 10.000000)">
|
||||
<g id="europe" transform="translate(380.000000, 350.000000)">
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="336" height="175.781832" rx="2"></rect>
|
||||
<text id="Europe-datacenter" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="10.8218828" y="166.009524">Europe datacenter</tspan>
|
||||
</text>
|
||||
<text id="dtr.cache=true" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="121" y="131">dtr.cache=true</tspan>
|
||||
</text>
|
||||
<g id="nodes" transform="translate(14.000000, 12.000000)">
|
||||
<g id="node-1-copy-4">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-6" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node-1-copy-5" transform="translate(121.000000, 12.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-cache" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7836914" y="15">DTR cache</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="asia" transform="translate(0.000000, 350.000000)">
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="0" width="336" height="175.781832" rx="2"></rect>
|
||||
<text id="Asia-datacenter" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="10.8218828" y="166.009524">Asia datacenter</tspan>
|
||||
</text>
|
||||
<text id="dtr.cache=true" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="121" y="131.009524">dtr.cache=true</tspan>
|
||||
</text>
|
||||
<g id="nodes" transform="translate(14.000000, 12.000000)">
|
||||
<g id="node-1-copy-4">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-6" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node-1-copy-5" transform="translate(121.000000, 12.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-cache" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7836914" y="15">DTR cache</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-2" transform="translate(549.000000, 238.000000)">
|
||||
<circle id="Oval" fill="#E0E4E7" cx="4" cy="4" r="4"></circle>
|
||||
<path d="M4,88 C4,88 14.695432,66.3896645 14.695432,44.9976782 C14.695432,23.6056918 4,1.99535635 4,1.99535635" id="Path-3" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<text id="pull-from-upstream" font-family="OpenSans-Semibold, Open Sans" font-size="14" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="26.5" y="36">pull from</tspan>
|
||||
<tspan x="26.5" y="55">upstream</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrow-1" transform="translate(57.000000, 237.000000)">
|
||||
<circle id="Oval" fill="#E0E4E7" cx="96" cy="4" r="4"></circle>
|
||||
<path d="M96.0764013,88.0046436 C96.0764013,88.0046436 90,66.3943082 90,45.0023218 C90,23.6103355 96.0764013,2 96.0764013,2" id="Path-3" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<text id="pull-from-upstream" font-family="OpenSans-Semibold, Open Sans" font-size="14" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="0" y="41">pull from</tspan>
|
||||
<tspan x="0" y="60">upstream</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="us" transform="translate(191.000000, 0.000000)">
|
||||
<text id="US-datacenter---dtr." font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="10.8218828" y="267.009524">US datacenter - dtr.example.org</tspan>
|
||||
</text>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="0" y="93" width="336" height="181" rx="2"></rect>
|
||||
<g id="storage" transform="translate(14.000000, 194.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="31" width="309" height="22" rx="2"></rect>
|
||||
<text id="shared-storage" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="118.519531" y="46">shared storage</tspan>
|
||||
</text>
|
||||
<g id="arrows" transform="translate(44.000000, 0.000000)">
|
||||
<g id="arrow-copy-2" transform="translate(218.500000, 17.000000) rotate(-90.000000) translate(-218.500000, -17.000000) translate(202.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-1"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-3" transform="translate(111.500000, 17.000000) rotate(-90.000000) translate(-111.500000, -17.000000) translate(95.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-2"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-4" transform="translate(4.500000, 17.000000) rotate(-90.000000) translate(-4.500000, -17.000000) translate(-12.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#FFB463" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-3"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="nodes" transform="translate(14.000000, 105.000000)">
|
||||
<g id="node-1-copy-4">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-agent" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7373047" y="15">UCP agent</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-replica" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="21.5986328" y="15">DTR replica</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-5" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-agent" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7373047" y="15">UCP agent</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-replica" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="21.5986328" y="15">DTR replica</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-6" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-EE-Engine" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker EE Engine</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-agent" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="23.7373047" y="15">UCP agent</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp-copy" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR-replica" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="21.5986328" y="15">DTR replica</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="lb" transform="translate(15.000000, 51.000000)">
|
||||
<g id="main">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="309" height="22" rx="2"></rect>
|
||||
<text id="your-load-balancer" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="111.437988" y="15">your load balancer</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrows" transform="translate(43.000000, 21.000000)">
|
||||
<g id="arrow-copy-3" transform="translate(218.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-218.500000, -17.000000) translate(202.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-4"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy" transform="translate(111.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-111.500000, -17.000000) translate(95.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-2" transform="translate(4.500000, 17.000000) scale(1, -1) rotate(-90.000000) translate(-4.500000, -17.000000) translate(-12.000000, 13.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-6"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="users" transform="translate(136.000000, 0.000000)" fill="#82949E">
|
||||
<g id="user">
|
||||
<text id="UI" font-family="OpenSans, Open Sans" font-size="12" font-weight="normal">
|
||||
<tspan x="7" y="41">UI</tspan>
|
||||
</text>
|
||||
<path d="M13,13 C16.59125,13 19.5,10.083125 19.5,6.5 C19.5,2.90875 16.59125,0 13,0 C9.40875,0 6.5,2.90875 6.5,6.5 C6.5,10.083125 9.40875,13 13,13 L13,13 Z M13,16.25 C8.669375,16.25 0,18.419375 0,22.75 L0,26 L26,26 L26,22.75 C26,18.419375 17.330625,16.25 13,16.25 L13,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="user-copy" transform="translate(42.000000, 0.000000)">
|
||||
<text id="CLI" font-family="OpenSans, Open Sans" font-size="12" font-weight="normal">
|
||||
<tspan x="4" y="41">CLI</tspan>
|
||||
</text>
|
||||
<path d="M13,13 C16.59125,13 19.5,10.083125 19.5,6.5 C19.5,2.90875 16.59125,0 13,0 C9.40875,0 6.5,2.90875 6.5,6.5 C6.5,10.083125 9.40875,13 13,13 L13,13 Z M13,16.25 C8.669375,16.25 0,18.419375 0,22.75 L0,26 L26,26 L26,22.75 C26,18.419375 17.330625,16.25 13,16.25 L13,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 28 KiB |
|
@ -0,0 +1,151 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="250px" viewBox="0 0 740 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background: #FFFFFF;">
|
||||
<!-- Generator: Sketch 48.1 (47250) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>dr-overview-1</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<circle id="path-1" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-2" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-3" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-4" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-5" cx="4" cy="4" r="4"></circle>
|
||||
</defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="dr-overview-1">
|
||||
<g id="group" transform="translate(29.000000, 55.000000)">
|
||||
<g id="dtr">
|
||||
<g id="network" transform="translate(0.000000, 127.000000)" fill="#439FD1">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="682" height="14" rx="2"></rect>
|
||||
</g>
|
||||
<g id="arrows" transform="translate(229.000000, 102.000000)"></g>
|
||||
<g id="nodes">
|
||||
<g id="node-1-copy-4" transform="translate(476.000000, 0.000000)">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#439FD1" fill-rule="evenodd" xlink:href="#path-1"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#82949E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(0.000000, 43.000000)" fill="#82949E">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="97" height="59" rx="2"></rect>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#82949E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-3" transform="translate(367.000000, 0.000000)">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#439FD1" fill-rule="evenodd" xlink:href="#path-2"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#82949E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(0.000000, 43.000000)" fill="#82949E">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="97" height="59" rx="2"></rect>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#82949E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
<g id="error" transform="translate(32.000000, 55.000000)">
|
||||
<circle id="Oval-3" fill="#FFFFFF" cx="17" cy="17" r="17"></circle>
|
||||
<text id="!" font-family="CourierNewPS-BoldMT, Courier New" font-size="30" font-weight="bold" fill="#82949E">
|
||||
<tspan x="8.49853516" y="27">!</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node-1-copy-2" transform="translate(218.000000, 0.000000)">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#439FD1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#439FD1" fill-rule="evenodd" xlink:href="#path-3"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 43.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="58" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="33">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy" transform="translate(109.000000, 0.000000)">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#439FD1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#439FD1" fill-rule="evenodd" xlink:href="#path-4"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 43.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="58" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="33">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#439FD1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#439FD1" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 43.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="58" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="33">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="error" transform="translate(539.000000, 175.000000)">
|
||||
<circle id="Oval-3" fill="#82949E" cx="14" cy="14" r="14"></circle>
|
||||
<path d="M14,14 L6,14 L14,14 L14,6 L14,14 Z M14,14 L14,22 L14,14 L22,14 L14,14 Z" id="Path-5" stroke="#FFFFFF" stroke-width="3" transform="translate(14.000000, 14.000000) rotate(45.000000) translate(-14.000000, -14.000000) "></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,163 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="250px" viewBox="0 0 740 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background: #FFFFFF;">
|
||||
<!-- Generator: Sketch 48.1 (47250) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>dr-overview-2</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<circle id="path-1" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-2" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-3" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-4" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-5" cx="4" cy="4" r="4"></circle>
|
||||
</defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="dr-overview-2">
|
||||
<g id="group" transform="translate(29.000000, 55.000000)">
|
||||
<g id="dtr">
|
||||
<g id="network" transform="translate(0.000000, 120.000000)">
|
||||
<rect id="Rectangle-138" fill="#82949E" x="0" y="7" width="682" height="14" rx="2"></rect>
|
||||
<g id="error" transform="translate(327.000000, 0.000000)">
|
||||
<circle id="Oval-3" fill="#82949E" cx="14" cy="14" r="14"></circle>
|
||||
<path d="M14,14 L6,14 L14,14 L14,6 L14,14 Z M14,14 L14,22 L14,14 L22,14 L14,14 Z" id="Path-5" stroke="#FFFFFF" stroke-width="3" transform="translate(14.000000, 14.000000) rotate(45.000000) translate(-14.000000, -14.000000) "></path>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrows" transform="translate(229.000000, 102.000000)"></g>
|
||||
<g id="nodes">
|
||||
<g id="node-3-copy" transform="translate(476.000000, 0.000000)">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#82949E" fill-rule="evenodd" xlink:href="#path-1"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#82949E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(0.000000, 43.000000)" fill="#82949E">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="97" height="59" rx="2"></rect>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#82949E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
<g id="error" transform="translate(32.000000, 55.000000)">
|
||||
<circle id="Oval-3" fill="#FFFFFF" cx="17" cy="17" r="17"></circle>
|
||||
<text id="!" font-family="CourierNewPS-BoldMT, Courier New" font-size="30" font-weight="bold" fill="#82949E">
|
||||
<tspan x="8.49853516" y="27">!</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node-4" transform="translate(367.000000, 0.000000)">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#439FD1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#439FD1" fill-rule="evenodd" xlink:href="#path-2"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 43.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="58" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="33">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-3" transform="translate(218.000000, 0.000000)">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#82949E" fill-rule="evenodd" xlink:href="#path-3"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#82949E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(0.000000, 43.000000)" fill="#82949E">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="97" height="59" rx="2"></rect>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#82949E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
<g id="error" transform="translate(32.000000, 55.000000)">
|
||||
<circle id="Oval-3" fill="#FFFFFF" cx="17" cy="17" r="17"></circle>
|
||||
<text id="!" font-family="CourierNewPS-BoldMT, Courier New" font-size="30" font-weight="bold" fill="#82949E">
|
||||
<tspan x="8.49853516" y="27">!</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node-2" transform="translate(109.000000, 0.000000)">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#82949E" fill-rule="evenodd" xlink:href="#path-4"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#82949E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(0.000000, 43.000000)" fill="#82949E">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="97" height="59" rx="2"></rect>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#82949E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
<g id="error" transform="translate(32.000000, 55.000000)">
|
||||
<circle id="Oval-3" fill="#FFFFFF" cx="17" cy="17" r="17"></circle>
|
||||
<text id="!" font-family="CourierNewPS-BoldMT, Courier New" font-size="30" font-weight="bold" fill="#82949E">
|
||||
<tspan x="8.49853516" y="27">!</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node-1">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#82949E" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#82949E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(0.000000, 43.000000)" fill="#82949E">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="97" height="59" rx="2"></rect>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#82949E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
<g id="error" transform="translate(32.000000, 55.000000)">
|
||||
<circle id="Oval-3" fill="#FFFFFF" cx="17" cy="17" r="17"></circle>
|
||||
<text id="!" font-family="CourierNewPS-BoldMT, Courier New" font-size="30" font-weight="bold" fill="#82949E">
|
||||
<tspan x="8.49853516" y="27">!</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
|
@ -0,0 +1,166 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="250px" viewBox="0 0 740 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background: #FFFFFF;">
|
||||
<!-- Generator: Sketch 48.1 (47250) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>dr-overview-3</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<circle id="path-1" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-2" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-3" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-4" cx="4" cy="4" r="4"></circle>
|
||||
<circle id="path-5" cx="4" cy="4" r="4"></circle>
|
||||
</defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="dr-overview-3">
|
||||
<g id="group" transform="translate(29.000000, 55.000000)">
|
||||
<g id="dtr">
|
||||
<g id="network" transform="translate(0.000000, 127.000000)" fill="#82949E">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="682" height="14" rx="2"></rect>
|
||||
</g>
|
||||
<g id="arrows" transform="translate(229.000000, 102.000000)"></g>
|
||||
<g id="nodes">
|
||||
<g id="node-5" transform="translate(476.000000, 0.000000)">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#82949E" fill-rule="evenodd" xlink:href="#path-1"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#82949E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(0.000000, 43.000000)" fill="#82949E">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="97" height="59" rx="2"></rect>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#82949E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
<g id="error" transform="translate(32.000000, 55.000000)">
|
||||
<circle id="Oval-3" fill="#FFFFFF" cx="17" cy="17" r="17"></circle>
|
||||
<text id="!" font-family="CourierNewPS-BoldMT, Courier New" font-size="30" font-weight="bold" fill="#82949E">
|
||||
<tspan x="8.49853516" y="27">!</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node-4" transform="translate(367.000000, 0.000000)">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#82949E" fill-rule="evenodd" xlink:href="#path-2"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#82949E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(0.000000, 43.000000)" fill="#82949E">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="97" height="59" rx="2"></rect>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#82949E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
<g id="error" transform="translate(32.000000, 55.000000)">
|
||||
<circle id="Oval-3" fill="#FFFFFF" cx="17" cy="17" r="17"></circle>
|
||||
<text id="!" font-family="CourierNewPS-BoldMT, Courier New" font-size="30" font-weight="bold" fill="#82949E">
|
||||
<tspan x="8.49853516" y="27">!</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node-3" transform="translate(218.000000, 0.000000)">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#82949E" fill-rule="evenodd" xlink:href="#path-3"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#82949E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(0.000000, 43.000000)" fill="#82949E">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="97" height="59" rx="2"></rect>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#82949E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
<g id="error" transform="translate(32.000000, 55.000000)">
|
||||
<circle id="Oval-3" fill="#FFFFFF" cx="17" cy="17" r="17"></circle>
|
||||
<text id="!" font-family="CourierNewPS-BoldMT, Courier New" font-size="30" font-weight="bold" fill="#82949E">
|
||||
<tspan x="8.49853516" y="27">!</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node-2" transform="translate(109.000000, 0.000000)">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#82949E" fill-rule="evenodd" xlink:href="#path-4"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#82949E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(0.000000, 43.000000)" fill="#82949E">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="97" height="59" rx="2"></rect>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#82949E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
<g id="error" transform="translate(32.000000, 55.000000)">
|
||||
<circle id="Oval-3" fill="#FFFFFF" cx="17" cy="17" r="17"></circle>
|
||||
<text id="!" font-family="CourierNewPS-BoldMT, Courier New" font-size="30" font-weight="bold" fill="#82949E">
|
||||
<tspan x="8.49853516" y="27">!</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node-1">
|
||||
<g id="arrow" transform="translate(48.500000, 119.000000) rotate(-90.000000) translate(-48.500000, -119.000000) translate(32.000000, 115.000000)">
|
||||
<path d="M2,4 L33,4" id="Line" stroke="#82949E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#82949E" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#82949E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(0.000000, 43.000000)" fill="#82949E">
|
||||
<rect id="Rectangle-138" x="0" y="0" width="97" height="59" rx="2"></rect>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#82949E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
<g id="error" transform="translate(32.000000, 55.000000)">
|
||||
<circle id="Oval-3" fill="#FFFFFF" cx="17" cy="17" r="17"></circle>
|
||||
<text id="!" font-family="CourierNewPS-BoldMT, Courier New" font-size="30" font-weight="bold" fill="#82949E">
|
||||
<tspan x="8.49853516" y="27">!</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="error" transform="translate(356.000000, 175.000000)">
|
||||
<circle id="Oval-3" fill="#82949E" cx="14" cy="14" r="14"></circle>
|
||||
<path d="M14,14 L6,14 L14,14 L14,6 L14,14 Z M14,14 L14,22 L14,14 L22,14 L14,14 Z" id="Path-5" stroke="#FFFFFF" stroke-width="3" transform="translate(14.000000, 14.000000) rotate(45.000000) translate(-14.000000, -14.000000) "></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 106 KiB |
After Width: | Height: | Size: 291 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 105 KiB |
After Width: | Height: | Size: 124 KiB |
|
@ -0,0 +1,225 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="250px" viewBox="0 0 740 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 44.1 (41455) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>architecture-2</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="dtr-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="architecture-2">
|
||||
<text id="UCP-cluster" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="28.025" y="239.009524">UCP cluster</tspan>
|
||||
</text>
|
||||
<g id="nodes" transform="translate(36.000000, 15.000000)">
|
||||
<g id="workers" transform="translate(233.000000, 116.000000)">
|
||||
<g id="node-1-copy">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1-copy-2" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="worker-dtr" transform="translate(347.000000, 0.000000)">
|
||||
<g id="node-1">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-2" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-3" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">worker node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-worker" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="20.4755859" y="15">UCP worker</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="dtr" transform="translate(1.000000, 33.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="DTR" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.4980469" y="15">DTR</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="manager-ucp">
|
||||
<g id="node-3" transform="translate(214.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="manager-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">manager node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-manager" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="16.0297852" y="15">UCP manager</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-2" transform="translate(107.000000, 0.000000)">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="manager-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">manager node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-manager" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="16.0297852" y="15">UCP manager</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-1">
|
||||
<g id="node">
|
||||
<g id="node-label">
|
||||
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||
<text id="manager-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="6" y="14">manager node</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="engine" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="Docker-Engine-EE" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="7.59716797" y="15">Docker Engine EE</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="ucp" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#1488C6" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP-manager" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="16.0297852" y="15">UCP manager</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<rect id="group" stroke="#82949E" stroke-width="2" stroke-dasharray="5,5,5,5" x="21" y="3" width="687" height="245" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 356 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 98 KiB |