Merge branch 'master' into kube-ingress-updates
10
Dockerfile
|
@ -66,16 +66,6 @@ COPY --from=docs/docker.github.io:nginx-onbuild /etc/nginx/conf.d/default.conf /
|
|||
# archives less often than new ones.
|
||||
# To add a new archive, add it here
|
||||
# AND ALSO edit _data/docsarchives/archives.yaml to add it to the drop-down
|
||||
COPY --from=docs/docker.github.io:v1.4 ${TARGET} ${TARGET}
|
||||
COPY --from=docs/docker.github.io:v1.5 ${TARGET} ${TARGET}
|
||||
COPY --from=docs/docker.github.io:v1.6 ${TARGET} ${TARGET}
|
||||
COPY --from=docs/docker.github.io:v1.7 ${TARGET} ${TARGET}
|
||||
COPY --from=docs/docker.github.io:v1.8 ${TARGET} ${TARGET}
|
||||
COPY --from=docs/docker.github.io:v1.9 ${TARGET} ${TARGET}
|
||||
COPY --from=docs/docker.github.io:v1.10 ${TARGET} ${TARGET}
|
||||
COPY --from=docs/docker.github.io:v1.11 ${TARGET} ${TARGET}
|
||||
COPY --from=docs/docker.github.io:v1.12 ${TARGET} ${TARGET}
|
||||
COPY --from=docs/docker.github.io:v1.13 ${TARGET} ${TARGET}
|
||||
COPY --from=docs/docker.github.io:v17.03 ${TARGET} ${TARGET}
|
||||
COPY --from=docs/docker.github.io:v17.06 ${TARGET} ${TARGET}
|
||||
COPY --from=docs/docker.github.io:v17.09 ${TARGET} ${TARGET}
|
||||
|
|
27
README.md
|
@ -107,7 +107,7 @@ of [https://docs.docker.com/](https://docs.docker.com/).
|
|||
|
||||
## Staging the docs
|
||||
|
||||
You have two options:
|
||||
You have three options:
|
||||
|
||||
1. On your local machine, clone this repo and run our staging container:
|
||||
|
||||
|
@ -169,7 +169,17 @@ You have two options:
|
|||
running on http://localhost:4000/ by default. To stop it, use `CTRL+C`.
|
||||
You can continue working in a second terminal and Jekyll will rebuild the
|
||||
website incrementally. Refresh the browser to preview your changes.
|
||||
|
||||
3. Build and run a Docker image for your working branch.
|
||||
|
||||
```bash
|
||||
$ docker build -t docker build -t docs/docker.github.io:<branch_name> .
|
||||
$ docker run --rm -it -p 4000:4000 docs/docker.github.io:<branch_name>
|
||||
```
|
||||
|
||||
After the `docker run` command, copy the URL provided in the container build output in a browser,
|
||||
http://0.0.0.0:4000, and verify your changes.
|
||||
|
||||
## Read these docs offline
|
||||
|
||||
To read the docs offline, you can use either a standalone container or a swarm service.
|
||||
|
@ -317,6 +327,21 @@ still optimizes the bandwidth during browsing).
|
|||
> This is beta content. It is not yet complete and should be considered a work in progress. This content is subject to change without notice.
|
||||
```
|
||||
|
||||
## Accessing unsupported archived documentation
|
||||
|
||||
Supported documentation includes the current version plus the previous five versions.
|
||||
|
||||
If you are using a version of the documentation that is no longer supported, which means that the version number is not listed in the site dropdown list, you can still access that documentation in the following ways:
|
||||
|
||||
- By entering your version number and selecting it from the branch selection list for this repo
|
||||
- By directly accessing the Github URL for your version. For example, https://github.com/docker/docker.github.io/tree/v1.9 for `v1.9`
|
||||
- By running a container of the specific [tag for your documentation version](https://cloud.docker.com/u/docs/repository/docker/docs/docker.github.io/general#read-these-docs-offline)
|
||||
in Docker Hub. For example, run the following to access `v1.9`:
|
||||
|
||||
```bash
|
||||
docker run -it -p 4000:4000 docs/docker.github.io:v1.9
|
||||
```
|
||||
|
||||
## Building archives and the live published docs
|
||||
|
||||
All the images described below are automatically built using Docker Hub. To
|
||||
|
|
|
@ -13,7 +13,7 @@ safe: false
|
|||
lsi: false
|
||||
url: https://docs.docker.com
|
||||
# This needs to have all the directories you expect to be in the archives (delivered by docs-base in the Dockerfile)
|
||||
keep_files: ["v1.4", "v1.5", "v1.6", "v1.7", "v1.8", "v1.9", "v1.10", "v1.11", "v1.12", "v1.13", "v17.03", "v17.06", "v17.09", "v17.12", "v18.03"]
|
||||
keep_files: ["v17.03", "v17.06", "v17.09", "v17.12", "v18.03"]
|
||||
exclude: ["_scripts", "apidocs/layouts", "Gemfile", "hooks", "index.html", "404.html"]
|
||||
|
||||
# Component versions -- address like site.docker_ce_version
|
||||
|
@ -94,7 +94,7 @@ defaults:
|
|||
- scope:
|
||||
path: "install"
|
||||
values:
|
||||
win_latest_build: "docker-18.09.1"
|
||||
win_latest_build: "docker-18.09.2"
|
||||
- scope:
|
||||
path: "datacenter"
|
||||
values:
|
||||
|
|
|
@ -22,33 +22,3 @@
|
|||
- archive:
|
||||
name: v17.03
|
||||
image: docs/docker.github.io:v17.03
|
||||
- archive:
|
||||
name: v1.13
|
||||
image: docs/docker.github.io:v1.13
|
||||
- archive:
|
||||
name: v1.12
|
||||
image: docs/docker.github.io:v1.12
|
||||
- archive:
|
||||
name: v1.11
|
||||
image: docs/docker.github.io:v1.11
|
||||
- archive:
|
||||
name: v1.10
|
||||
image: docs/docker.github.io:v1.10
|
||||
- archive:
|
||||
name: v1.9
|
||||
image: docs/docker.github.io:v1.9
|
||||
- archive:
|
||||
name: v1.8
|
||||
image: docs/docker.github.io:v1.8
|
||||
- archive:
|
||||
name: v1.7
|
||||
image: docs/docker.github.io:v1.7
|
||||
- archive:
|
||||
name: v1.6
|
||||
image: docs/docker.github.io:v1.6
|
||||
- archive:
|
||||
name: v1.5
|
||||
image: docs/docker.github.io:v1.5
|
||||
- archive:
|
||||
name: v1.4
|
||||
image: docs/docker.github.io:v1.4
|
||||
|
|
|
@ -1454,7 +1454,7 @@ examples: |-
|
|||
On Windows server, assuming the default configuration, these commands are equivalent
|
||||
and result in `process` isolation:
|
||||
|
||||
```PowerShell
|
||||
```powershell
|
||||
PS C:\> docker run -d microsoft/nanoserver powershell echo process
|
||||
PS C:\> docker run -d --isolation default microsoft/nanoserver powershell echo process
|
||||
PS C:\> docker run -d --isolation process microsoft/nanoserver powershell echo process
|
||||
|
@ -1464,7 +1464,7 @@ examples: |-
|
|||
are running against a Windows client-based daemon, these commands are equivalent and
|
||||
result in `hyperv` isolation:
|
||||
|
||||
```PowerShell
|
||||
```powershell
|
||||
PS C:\> docker run -d microsoft/nanoserver powershell echo hyperv
|
||||
PS C:\> docker run -d --isolation default microsoft/nanoserver powershell echo hyperv
|
||||
PS C:\> docker run -d --isolation hyperv microsoft/nanoserver powershell echo hyperv
|
||||
|
|
|
@ -32,7 +32,7 @@ collection: |
|
|||
nodes, services, containers, volumes, networks, and secrets. [Learn how to manage collections](/datacenter/ucp/2.2/guides/access-control/manage-access-with-collections/).
|
||||
Compose: |
|
||||
[Compose](https://github.com/docker/compose) is a tool for defining and
|
||||
running complex applications with Docker. With compose, you define a
|
||||
running complex applications with Docker. With Compose, you define a
|
||||
multi-container application in a single file, then spin your
|
||||
application up in a single command which does everything that needs to
|
||||
be done to get it running.
|
||||
|
|
110
_data/toc.yaml
|
@ -1182,6 +1182,8 @@ manuals:
|
|||
title: Add SANs to cluster certificates
|
||||
- path: /ee/ucp/admin/configure/collect-cluster-metrics/
|
||||
title: Collect UCP cluster metrics with Prometheus
|
||||
- path: /ee/ucp/admin/configure/metrics-descriptions/
|
||||
title: Using UCP cluster metrics with Prometheus
|
||||
- path: /ee/ucp/admin/configure/configure-rbac-kube/
|
||||
title: Configure native Kubernetes role-based access control
|
||||
- path: /ee/ucp/admin/configure/create-audit-logs/
|
||||
|
@ -1204,8 +1206,6 @@ manuals:
|
|||
title: UCP configuration file
|
||||
- path: /ee/ucp/admin/configure/use-node-local-network-in-swarm/
|
||||
title: Use a local node network in a swarm
|
||||
- path: /ee/ucp/admin/configure/use-nfs-volumes/
|
||||
title: Use NFS persistent storage
|
||||
- path: /ee/ucp/admin/configure/use-your-own-tls-certificates/
|
||||
title: Use your own TLS certificates
|
||||
- path: /ee/ucp/admin/configure/manage-and-deploy-private-images/
|
||||
|
@ -1224,8 +1224,6 @@ manuals:
|
|||
title: Join Windows worker nodes to your cluster
|
||||
- path: /ee/ucp/admin/configure/join-nodes/use-a-load-balancer/
|
||||
title: Use a load balancer
|
||||
- path: /ee/ucp/admin/configure/integrate-with-multiple-registries/
|
||||
title: Integrate with multiple registries
|
||||
- path: /ee/ucp/admin/configure/deploy-route-reflectors/
|
||||
title: Improve network performance with Route Reflectors
|
||||
- sectiontitle: Monitor and troubleshoot
|
||||
|
@ -1345,6 +1343,8 @@ manuals:
|
|||
section:
|
||||
- title: Access Kubernetes Resources
|
||||
path: /ee/ucp/kubernetes/kube-resources/
|
||||
- title: Use NFS persistent storage
|
||||
path: /ee/ucp/admin/configure/use-nfs-volumes/
|
||||
- title: Configure AWS EBS Storage for Kubernetes
|
||||
path: /ee/ucp/kubernetes/configure-aws-storage/
|
||||
- title: Deploy a workload
|
||||
|
@ -1434,7 +1434,7 @@ manuals:
|
|||
section:
|
||||
- path: /datacenter/ucp/3.0/guides/admin/monitor-and-troubleshoot/
|
||||
title: Monitor the cluster status
|
||||
- path: /datacenter/ucp/3.0/admin/monitor-and-troubleshoot/troubleshoot-node-messages/
|
||||
- path: /datacenter/ucp/3.0/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages/
|
||||
title: Troubleshoot node messages
|
||||
- path: /datacenter/ucp/3.0/guides/admin/monitor-and-troubleshoot/troubleshoot-with-logs/
|
||||
title: Troubleshoot with logs
|
||||
|
@ -1506,27 +1506,75 @@ manuals:
|
|||
title: Web-based access
|
||||
- path: /datacenter/ucp/3.0/guides/user/access-ucp/cli-based-access/
|
||||
title: CLI-based access
|
||||
- sectiontitle: Deploy an application
|
||||
- path: /datacenter/ucp/3.0/guides/user/access-ucp/kubectl/
|
||||
title: Install the Kubernetes CLI
|
||||
- sectiontitle: Deploy apps with Swarm
|
||||
section:
|
||||
- path: /datacenter/ucp/3.0/guides/user/services/deploy-a-service/
|
||||
title: Deploy a service
|
||||
- path: /datacenter/ucp/3.0/guides/user/services/use-domain-names-to-access-services/
|
||||
title: Use domain names to access services
|
||||
- path: /datacenter/ucp/3.0/guides/user/services/
|
||||
title: Deploy an app from the UI
|
||||
- path: /datacenter/ucp/3.0/guides/user/services/deploy-app-cli/
|
||||
title: Deploy an app from the CLI
|
||||
- path: /datacenter/ucp/3.0/guides/user/services/deploy-stack-to-collection/
|
||||
- path: /datacenter/ucp/3.0/guides/user/swarm/
|
||||
title: Deploy a single service
|
||||
- path: /datacenter/ucp/3.0/guides/user/swarm/deploy-multi-service-app/
|
||||
title: Deploy a multi-service app
|
||||
- path: /datacenter/ucp/3.0/guides/user/swarm/deploy-to-collection/
|
||||
title: Deploy application resources to a collection
|
||||
- sectiontitle: Secrets
|
||||
- path: /datacenter/ucp/3.0/guides/user/swarm/use-secrets/
|
||||
title: Use secrets in your services
|
||||
- sectiontitle: Layer 7 routing
|
||||
section:
|
||||
- path: /datacenter/ucp/3.0/guides/user/interlock/
|
||||
title: Overview
|
||||
- path: /datacenter/ucp/3.0/guides/user/interlock/architecture/
|
||||
title: Architecture
|
||||
- sectiontitle: Deploy
|
||||
section:
|
||||
- title: Simple deployment
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/deploy/
|
||||
- title: Configure your deployment
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/deploy/configure/
|
||||
- title: Production deployment
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/deploy/production/
|
||||
- title: Host mode networking
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/deploy/host-mode-networking/
|
||||
- title: Configuration reference
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/deploy/configuration-reference/
|
||||
- sectiontitle: Route traffic to services
|
||||
section:
|
||||
- title: Simple swarm service
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/usage/
|
||||
- title: Set a default service
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/usage/default-service/
|
||||
- title: Applications with TLS
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/usage/tls/
|
||||
- title: Application redirects
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/usage/redirects/
|
||||
- title: Persistent (sticky) sessions
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/usage/sessions/
|
||||
- title: Websockets
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/usage/websockets/
|
||||
- title: Canary application instances
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/usage/canary/
|
||||
- title: Service clusters
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/usage/service-clusters/
|
||||
- title: Context/Path based routing
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/usage/context/
|
||||
- title: Service labels reference
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/usage/labels-reference/
|
||||
- title: Layer 7 routing upgrade
|
||||
path: /datacenter/ucp/3.0/guides/user/interlock/upgrade/
|
||||
- sectiontitle: Deploy apps with Kubernetes
|
||||
section:
|
||||
- path: /datacenter/ucp/3.0/guides/user/secrets/
|
||||
title: Manage secrets
|
||||
- path: /datacenter/ucp/3.0/guides/user/secrets/grant-revoke-access/
|
||||
title: Grant access to secrets
|
||||
- title: Deploy a workload
|
||||
path: /datacenter/ucp/3.0/guides/user/kubernetes/
|
||||
- title: Deploy a Compose-based app
|
||||
path: /datacenter/ucp/3.0/guides/user/kubernetes/deploy-with-compose/
|
||||
- title: Deploy an ingress controller
|
||||
path: /datacenter/ucp/3.0/guides/user/kubernetes/layer-7-routing/
|
||||
- title: Create a service account for a Kubernetes app
|
||||
path: /datacenter/ucp/3.0/guides/user/kubernetes/create-service-account/
|
||||
- title: Install a CNI plugin
|
||||
path: /datacenter/ucp/3.0/guides/user/kubernetes/install-cni-plugin/
|
||||
- path: /datacenter/ucp/3.0/reference/api/
|
||||
title: API reference
|
||||
- path: /ee/ucp/release-notes/
|
||||
- path: /ee/ucp/release-notes/#version-30
|
||||
title: Release notes
|
||||
nosync: true
|
||||
- path: /datacenter/ucp/3.0/guides/get-support/
|
||||
|
@ -1577,6 +1625,8 @@ manuals:
|
|||
title: Restrict services to worker nodes
|
||||
- path: /datacenter/ucp/2.2/guides/admin/configure/run-only-the-images-you-trust/
|
||||
title: Run only the images you trust
|
||||
- path: /datacenter/ucp/2.2/guides/admin/configure/use-trusted-images-for-ci/
|
||||
title: Use trusted images for continuous integration
|
||||
- path: /datacenter/ucp/2.2/guides/admin/configure/scale-your-cluster/
|
||||
title: Scale your cluster
|
||||
- path: /datacenter/ucp/2.2/guides/admin/configure/set-session-timeout/
|
||||
|
@ -1691,7 +1741,7 @@ manuals:
|
|||
title: Grant access to secrets
|
||||
- path: /datacenter/ucp/2.2/reference/api/
|
||||
title: API reference
|
||||
- path: /ee/ucp/release-notes/
|
||||
- path: /ee/ucp/release-notes/#version-22
|
||||
title: Release notes
|
||||
nosync: true
|
||||
- path: /datacenter/ucp/2.2/guides/get-support/
|
||||
|
@ -1742,6 +1792,8 @@ manuals:
|
|||
title: Use domain names to access services
|
||||
- path: /datacenter/ucp/2.1/guides/admin/configure/run-only-the-images-you-trust/
|
||||
title: Run only the images you trust
|
||||
- path: /datacenter/ucp/2.1/guides/admin/configure/use-trusted-images-for-ci/
|
||||
title: Use trusted images for continuous integration
|
||||
- path: /datacenter/ucp/2.1/guides/admin/configure/integrate-with-dtr/
|
||||
title: Integrate with Docker Trusted Registry
|
||||
- path: /datacenter/ucp/2.1/guides/admin/configure/external-auth/
|
||||
|
@ -2150,8 +2202,8 @@ manuals:
|
|||
title: Monitor the cluster status
|
||||
- path: /ee/dtr/admin/monitor-and-troubleshoot/notary-audit-logs/
|
||||
title: Check Notary audit logs
|
||||
- path: /ee/dtr/admin/monitor-and-troubleshoot/troubleshoot-with-logs/
|
||||
title: Troubleshoot with logs
|
||||
- path: /ee/dtr/admin/monitor-and-troubleshoot/troubleshoot-dtr/
|
||||
title: Troubleshoot Docker Trusted Registry
|
||||
- sectiontitle: Disaster recovery
|
||||
section:
|
||||
- title: Overview
|
||||
|
@ -2197,10 +2249,8 @@ manuals:
|
|||
section:
|
||||
- path: /ee/dtr/user/manage-images/sign-images/
|
||||
title: Sign an image
|
||||
- path: /ee/dtr/user/manage-images/sign-images/delegate-image-signing/
|
||||
title: Delegate image signing
|
||||
- path: /ee/dtr/user/manage-images/sign-images/manage-trusted-repositories/
|
||||
title: Manage trusted repositories
|
||||
- path: /ee/dtr/user/manage-images/sign-images/trust-with-remote-ucp/
|
||||
title: Trust with a Remote UCP
|
||||
- sectiontitle: Promotion policies and mirroring
|
||||
section:
|
||||
- title: Overview
|
||||
|
@ -2308,8 +2358,8 @@ manuals:
|
|||
title: Monitor the cluster status
|
||||
- path: /datacenter/dtr/2.5/guides/admin/monitor-and-troubleshoot/notary-audit-logs/
|
||||
title: Check Notary audit logs
|
||||
- path: /datacenter/dtr/2.5/guides/admin/monitor-and-troubleshoot/troubleshoot-with-logs/
|
||||
title: Troubleshoot with logs
|
||||
- path: /datacenter/dtr/2.5/guides/admin/monitor-and-troubleshoot/troubleshoot-dtr/
|
||||
title: Troubleshoot Docker Trusted Registry
|
||||
- path: /datacenter/dtr/2.5/guides/admin/monitor-and-troubleshoot/troubleshoot-batch-jobs/
|
||||
title: Troubleshoot batch jobs
|
||||
- path: /datacenter/dtr/2.5/guides/admin/backups-and-disaster-recovery/
|
||||
|
|
|
@ -137,7 +137,7 @@ You only need to set up the repository once, after which you can install Docker
|
|||
|
||||
{% elsif section == "install-using-yum-repo" %}
|
||||
|
||||
> ***NOTE:*** If you need to run Docker EE 2.0, please see the following instructions:
|
||||
> **Note**: If you need to run Docker EE 2.0, please see the following instructions:
|
||||
> * [18.03](https://docs.docker.com/v18.03/ee/supported-platforms/) - Older Docker EE Engine only release
|
||||
> * [17.06](https://docs.docker.com/v17.06/engine/installation/) - Docker Enterprise Edition 2.0 (Docker Engine,
|
||||
> UCP, and DTR).
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
<li><a href="https://docs.docker.com/">Documentation</a></li>
|
||||
<li><a href="https://www.docker.com/docker">Learn</a></li>
|
||||
<li><a href="https://blog.docker.com" target="_blank">Blog</a></li>
|
||||
<li><a href="https://engineering.docker.com" target="_blank">Engineering Blog</a></li>
|
||||
<li><a href="https://training.docker.com/" target="_blank">Training</a></li>
|
||||
<li><a href="https://success.docker.com/support">Support</a></li>
|
||||
<li><a href="https://success.docker.com/kbase">Knowledge Base</a></li>
|
||||
|
|
|
@ -13,19 +13,30 @@ for the bash and zsh shell.
|
|||
|
||||
Make sure bash completion is installed.
|
||||
|
||||
* On a current Linux OS (in a non-minimal installation), bash completion should be
|
||||
#### Linux
|
||||
|
||||
1. On a current Linux OS (in a non-minimal installation), bash completion should be
|
||||
available.
|
||||
|
||||
* On a Mac, install with `brew install bash-completion`.
|
||||
|
||||
Place the completion script in `/etc/bash_completion.d/`
|
||||
(or `/usr/local/etc/bash_completion.d/` on a Mac):
|
||||
2. Place the completion script in `/etc/bash_completion.d/`.
|
||||
|
||||
```shell
|
||||
sudo curl -L https://raw.githubusercontent.com/docker/compose/{{site.compose_version}}/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
|
||||
```
|
||||
|
||||
On a Mac, add the following to your `~/.bash_profile`:
|
||||
### Mac
|
||||
|
||||
##### Install via Homebrew
|
||||
|
||||
1. Install with `brew install bash-completion`.
|
||||
2. After the installation, Brew displays the installation path. Make sure to place the completion script in the path.
|
||||
|
||||
For example, when running this command on Mac 10.13.2, place the completion script in `/usr/local/etc/bash_completion.d/`.
|
||||
|
||||
```shell
|
||||
sudo curl -L https://raw.githubusercontent.com/docker/compose/{{site.compose_version}}/contrib/completion/bash/docker-compose -o /usr/local/etc/bash_completion.d/docker-compose
|
||||
```
|
||||
|
||||
3. Add the following to your `~/.bash_profile`:
|
||||
|
||||
```shell
|
||||
if [ -f $(brew --prefix)/etc/bash_completion ]; then
|
||||
|
@ -33,13 +44,13 @@ if [ -f $(brew --prefix)/etc/bash_completion ]; then
|
|||
fi
|
||||
```
|
||||
|
||||
You can source your `~/.bash_profile` or launch a new terminal to utilize
|
||||
4. You can source your `~/.bash_profile` or launch a new terminal to utilize
|
||||
completion.
|
||||
|
||||
If you're using MacPorts instead of brew, use the following steps instead:
|
||||
##### Install via MacPorts
|
||||
|
||||
Run `sudo port install bash-completion` to install bash completion.
|
||||
Add the following lines to `~/.bash_profile`:
|
||||
1. Run `sudo port install bash-completion` to install bash completion.
|
||||
2. Add the following lines to `~/.bash_profile`:
|
||||
|
||||
```shell
|
||||
if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then
|
||||
|
@ -47,43 +58,44 @@ if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then
|
|||
fi
|
||||
```
|
||||
|
||||
You can source your `~/.bash_profile` or launch a new terminal to utilize
|
||||
3. You can source your `~/.bash_profile` or launch a new terminal to utilize
|
||||
completion.
|
||||
|
||||
### Zsh
|
||||
|
||||
#### With oh-my-zsh
|
||||
Make sure you have [installed `oh-my-zsh`](https://ohmyz.sh/) on your computer.
|
||||
|
||||
Add `docker` to the plugins list in `~/.zshrc`:
|
||||
#### With oh-my-zsh shell
|
||||
|
||||
Add `docker` and `docker-compose` to the plugins list in `~/.zshrc` to run autocompletion within the oh-my-zsh shell. In the following example, `...` represent other Zsh plugins you may have installed.
|
||||
|
||||
```shell
|
||||
plugins=(
|
||||
<existing-plugins> docker
|
||||
plugins=(... docker docker-compose
|
||||
)
|
||||
```
|
||||
|
||||
#### Without oh-my-zsh
|
||||
#### Without oh-my-zsh shell
|
||||
|
||||
Place the completion script in your `/path/to/zsh/completion` (typically `~/.zsh/completion/`):
|
||||
1. Place the completion script in your `/path/to/zsh/completion` (typically `~/.zsh/completion/`):
|
||||
|
||||
```shell
|
||||
$ mkdir -p ~/.zsh/completion
|
||||
$ curl -L https://raw.githubusercontent.com/docker/compose/{{site.compose_version}}/contrib/completion/zsh/_docker-compose > ~/.zsh/completion/_docker-compose
|
||||
```
|
||||
|
||||
Include the directory in your `$fpath` by adding in `~/.zshrc`:
|
||||
2. Include the directory in your `$fpath` by adding in `~/.zshrc`:
|
||||
|
||||
```shell
|
||||
fpath=(~/.zsh/completion $fpath)
|
||||
```
|
||||
|
||||
Make sure `compinit` is loaded or do it by adding in `~/.zshrc`:
|
||||
3. Make sure `compinit` is loaded or do it by adding in `~/.zshrc`:
|
||||
|
||||
```shell
|
||||
autoload -Uz compinit && compinit -i
|
||||
```
|
||||
|
||||
Then reload your shell:
|
||||
4. Then reload your shell:
|
||||
|
||||
```shell
|
||||
exec $SHELL -l
|
||||
|
|
|
@ -205,7 +205,7 @@ the value assigned to a variable that shows up more than once_. The files in the
|
|||
list are processed from the top down. For the same variable specified in file
|
||||
`a.env` and assigned a different value in file `b.env`, if `b.env` is
|
||||
listed below (after), then the value from `b.env` stands. For example, given the
|
||||
following declaration in `docker_compose.yml`:
|
||||
following declaration in `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
|
|
|
@ -532,7 +532,7 @@ the value assigned to a variable that shows up more than once_. The files in the
|
|||
list are processed from the top down. For the same variable specified in file
|
||||
`a.env` and assigned a different value in file `b.env`, if `b.env` is
|
||||
listed below (after), then the value from `b.env` stands. For example, given the
|
||||
following declaration in `docker_compose.yml`:
|
||||
following declaration in `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
|
@ -990,7 +990,7 @@ as it has the highest priority. It then connects to `app_net_3`, then
|
|||
app_net_2:
|
||||
app_net_3:
|
||||
|
||||
> **Note:** If multiple networks have the same priority, the connection order
|
||||
> **Note**: If multiple networks have the same priority, the connection order
|
||||
> is undefined.
|
||||
|
||||
### pid
|
||||
|
@ -1235,7 +1235,7 @@ volumes:
|
|||
mydata:
|
||||
```
|
||||
|
||||
> **Note:** When creating bind mounts, using the long syntax requires the
|
||||
> **Note**: When creating bind mounts, using the long syntax requires the
|
||||
> referenced folder to be created beforehand. Using the short syntax
|
||||
> creates the folder on the fly if it doesn't exist.
|
||||
> See the [bind mounts documentation](/engine/admin/volumes/bind-mounts.md/#differences-between--v-and---mount-behavior)
|
||||
|
@ -1248,7 +1248,7 @@ service.
|
|||
|
||||
volume_driver: mydriver
|
||||
|
||||
> **Note:** In [version 2 files](compose-versioning.md#version-2), this
|
||||
> **Note**: In [version 2 files](compose-versioning.md#version-2), this
|
||||
> option only applies to anonymous volumes (those specified in the image,
|
||||
> or specified under `volumes` without an explicit named volume or host path).
|
||||
> To configure the driver for a named volume, use the `driver` key under the
|
||||
|
@ -1298,7 +1298,7 @@ then read-write is used.
|
|||
Each of these is a single value, analogous to its
|
||||
[docker run](/engine/reference/run.md) counterpart.
|
||||
|
||||
> **Note:** The following options were added in [version 2.2](compose-versioning.md#version-22):
|
||||
> **Note**: The following options were added in [version 2.2](compose-versioning.md#version-22):
|
||||
> `cpu_count`, `cpu_percent`, `cpus`.
|
||||
> The following options were added in [version 2.1](compose-versioning.md#version-21):
|
||||
> `oom_kill_disable`, `cpu_period`
|
||||
|
|
|
@ -279,7 +279,7 @@ at build time is the value in the environment where Compose is running.
|
|||
|
||||
#### cache_from
|
||||
|
||||
> **Note:** This option is new in v3.2
|
||||
> **Note**: This option is new in v3.2
|
||||
|
||||
A list of images that the engine uses for cache resolution.
|
||||
|
||||
|
@ -291,7 +291,7 @@ A list of images that the engine uses for cache resolution.
|
|||
|
||||
#### labels
|
||||
|
||||
> **Note:** This option is new in v3.3
|
||||
> **Note**: This option is new in v3.3
|
||||
|
||||
Add metadata to the resulting image using [Docker labels](/engine/userguide/labels-custom-metadata.md).
|
||||
You can use either an array or a dictionary.
|
||||
|
@ -490,7 +490,7 @@ an error.
|
|||
|
||||
### credential_spec
|
||||
|
||||
> **Note:** this option was added in v3.3.
|
||||
> **Note**: this option was added in v3.3.
|
||||
|
||||
Configure the credential spec for managed service account. This option is only
|
||||
used for services using Windows containers. The `credential_spec` must be in the
|
||||
|
@ -726,8 +726,8 @@ Each of these is a single value, analogous to its [docker service
|
|||
create](/engine/reference/commandline/service_create.md) counterpart.
|
||||
|
||||
In this general example, the `redis` service is constrained to use no more than
|
||||
50M of memory and `0.50` (50%) of available processing time (CPU), and has
|
||||
`20M` of memory and `0.25` CPU time reserved (as always available to it).
|
||||
50M of memory and `0.50` (50% of a single core) of available processing time (CPU),
|
||||
and has `20M` of memory and `0.25` CPU time reserved (as always available to it).
|
||||
|
||||
```none
|
||||
version: '3'
|
||||
|
@ -1001,7 +1001,7 @@ the value assigned to a variable that shows up more than once_. The files in the
|
|||
list are processed from the top down. For the same variable specified in file
|
||||
`a.env` and assigned a different value in file `b.env`, if `b.env` is
|
||||
listed below (after), then the value from `b.env` stands. For example, given the
|
||||
following declaration in `docker_compose.yml`:
|
||||
following declaration in `docker-compose.yml`:
|
||||
|
||||
```none
|
||||
services:
|
||||
|
@ -1431,7 +1431,7 @@ containers in the bare-metal machine's namespace and vice versa.
|
|||
|
||||
Expose ports.
|
||||
|
||||
> **Note:** Port mapping is incompatible with `network_mode: host`
|
||||
> **Note**: Port mapping is incompatible with `network_mode: host`
|
||||
|
||||
#### Short syntax
|
||||
|
||||
|
@ -1473,7 +1473,7 @@ ports:
|
|||
|
||||
```
|
||||
|
||||
> **Note:** The long syntax is new in v3.2
|
||||
> **Note**: The long syntax is new in v3.2
|
||||
|
||||
### restart
|
||||
|
||||
|
@ -1810,7 +1810,7 @@ volumes:
|
|||
mydata:
|
||||
```
|
||||
|
||||
> **Note:** The long syntax is new in v3.2
|
||||
> **Note**: The long syntax is new in v3.2
|
||||
|
||||
|
||||
#### Volumes for services, swarms, and stack files
|
||||
|
@ -1888,7 +1888,7 @@ volume mounts (shared filesystems)](/docker-for-mac/osxfs-caching.md).
|
|||
### domainname, hostname, ipc, mac\_address, privileged, read\_only, shm\_size, stdin\_open, tty, user, working\_dir
|
||||
|
||||
Each of these is a single value, analogous to its
|
||||
[docker run](/engine/reference/run.md) counterpart.
|
||||
[docker run](/engine/reference/run.md) counterpart. Note that `mac_address` is a legacy option.
|
||||
|
||||
user: postgresql
|
||||
working_dir: /code
|
||||
|
|
|
@ -77,14 +77,14 @@ Docker Compose. To do so, follow these steps:
|
|||
version of Compose you want to use:
|
||||
|
||||
```none
|
||||
Invoke-WebRequest "https://github.com/docker/compose/releases/download/$dockerComposeVersion/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\docker\docker-compose.exe
|
||||
Invoke-WebRequest "https://github.com/docker/compose/releases/download/$dockerComposeVersion/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\Docker\Docker\resources\bin\docker-compose.exe
|
||||
```
|
||||
|
||||
For example, to download Compose version {{site.compose_version}},
|
||||
the command is:
|
||||
|
||||
```none
|
||||
Invoke-WebRequest "https://github.com/docker/compose/releases/download/{{site.compose_version}}/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\docker\docker-compose.exe
|
||||
Invoke-WebRequest "https://github.com/docker/compose/releases/download/{{site.compose_version}}/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\Docker\Docker\resources\bin\docker-compose.exe
|
||||
```
|
||||
> Use the latest Compose release number in the download command.
|
||||
>
|
||||
|
@ -129,7 +129,7 @@ by step instructions are also included below.
|
|||
sudo chmod +x /usr/local/bin/docker-compose
|
||||
```
|
||||
|
||||
> ***Note:*** If the command `docker-compose` fails after installation, check your path.
|
||||
> **Note**: If the command `docker-compose` fails after installation, check your path.
|
||||
> You can also create a symbolic link to `/usr/bin` or any other directory in your path.
|
||||
|
||||
For example:
|
||||
|
|
|
@ -169,7 +169,7 @@ The following `strftime` codes are supported:
|
|||
| `%p` | AM or PM. | AM |
|
||||
| `%M` | Minute as a zero-padded decimal number. | 57 |
|
||||
| `%S` | Second as a zero-padded decimal number. | 04 |
|
||||
| `%L` | Milliseconds as a zero-padded decimal number. | 123 |
|
||||
| `%L` | Milliseconds as a zero-padded decimal number. | .123 |
|
||||
| `%f` | Microseconds as a zero-padded decimal number. | 000345 |
|
||||
| `%z` | UTC offset in the form +HHMM or -HHMM. | +1300 |
|
||||
| `%Z` | Time zone name. | PST |
|
||||
|
|
|
@ -147,6 +147,7 @@ see more options.
|
|||
|:------------------------------|:--------------------------------------------------------------------------------------------------------------|
|
||||
| `none` | No logs are available for the container and `docker logs` does not return any output. |
|
||||
| [`json-file`](json-file.md) | The logs are formatted as JSON. The default logging driver for Docker. |
|
||||
| [`local`](local.md) | Writes logs messages to local filesystem in binary files using Protobuf. |
|
||||
| [`syslog`](syslog.md) | Writes logging messages to the `syslog` facility. The `syslog` daemon must be running on the host machine. |
|
||||
| [`journald`](journald.md) | Writes log messages to `journald`. The `journald` daemon must be running on the host machine. |
|
||||
| [`gelf`](gelf.md) | Writes log messages to a Graylog Extended Log Format (GELF) endpoint such as Graylog or Logstash. |
|
||||
|
|
|
@ -110,7 +110,7 @@ for advanced [log tag options](log_tags.md).
|
|||
### fluentd-async-connect
|
||||
|
||||
Docker connects to Fluentd in the background. Messages are buffered until the
|
||||
connection is established.
|
||||
connection is established. Defaults to `false`.
|
||||
|
||||
### fluentd-buffer-limit
|
||||
|
||||
|
@ -123,11 +123,11 @@ How long to wait between retries. Defaults to 1 second.
|
|||
|
||||
### fluentd-max-retries
|
||||
|
||||
The maximum number of retries. Defaults to 10.
|
||||
The maximum number of retries. Defaults to `10`.
|
||||
|
||||
### fluentd-sub-second-precision
|
||||
|
||||
Generates event logs in nanosecond resolution. Defaults to false.
|
||||
Generates event logs in nanosecond resolution. Defaults to `false`.
|
||||
|
||||
## Fluentd daemon management with Docker
|
||||
|
||||
|
|
|
@ -13,6 +13,10 @@ and writes them in files using the JSON format. The JSON format annotates each l
|
|||
origin (`stdout` or `stderr`) and its timestamp. Each log file contains information about
|
||||
only one container.
|
||||
|
||||
```json
|
||||
{"log":"Log line is here\n","stream":"stdout","time":"2019-01-01T11:11:11.111111111Z"}
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
To use the `json-file` driver as the default logging driver, set the `log-driver`
|
||||
|
|
|
@ -24,7 +24,7 @@ a specific plugin using `docker inspect`.
|
|||
## Configure the plugin as the default logging driver
|
||||
|
||||
After the plugin is installed, you can configure the Docker daemon to use it as
|
||||
the default by setting the plugin's name as the value of the `logging-driver`
|
||||
the default by setting the plugin's name as the value of the `log-driver`
|
||||
key in the `daemon.json`, as detailed in the
|
||||
[logging overview](configure.md#configure-the-default-logging-driver). If the
|
||||
logging driver supports additional options, you can set those as the values of
|
||||
|
|
|
@ -28,8 +28,8 @@ any of the following:
|
|||
|:-----------------|:------------------------------------------------------------------------------------------------|
|
||||
| `no` | Do not automatically restart the container. (the default) |
|
||||
| `on-failure` | Restart the container if it exits due to an error, which manifests as a non-zero exit code. |
|
||||
| `unless-stopped` | Restart the container unless it is explicitly stopped or Docker itself is stopped or restarted. |
|
||||
| `always` | Always restart the container if it stops. |
|
||||
| `always` | Always restart the container if it stops. If it is manually stopped, it is restarted only when Docker daemon restarts or the container itself is manually restarted. (See the second bullet listed in [restart policy details](#restart-policy-details)) |
|
||||
| `unless-stopped` | Similar to `always`, except that when the container is stopped (manually or otherwise), it is not restarted even after Docker daemon restarts. |
|
||||
|
||||
The following example starts a Redis container and configures it to always
|
||||
restart unless it is explicitly stopped or Docker is restarted.
|
||||
|
|
|
@ -101,7 +101,7 @@ you need to add this configuration in the Docker systemd service file.
|
|||
The `NO_PROXY` variable specifies a string that contains comma-separated
|
||||
values for hosts that should be excluded from proxying. These are the
|
||||
options you can specify to exclude hosts:
|
||||
* IP address prefix (`1.2.3.4`) or in CIDR notation (`1.2.3.4/8`)
|
||||
* IP address prefix (`1.2.3.4`)
|
||||
* Domain name, or a special DNS label (`*`)
|
||||
* A domain name matches that name and all subdomains. A domain name with
|
||||
a leading "." matches subdomains only. For example, given the domains
|
||||
|
|
|
@ -24,11 +24,13 @@ command.
|
|||
|
||||
Example usage:
|
||||
|
||||
```bash
|
||||
$ docker run -it --rm dtr-internal.caas.docker.io/caas/dtr:2.4.0-alpha-008434_ge02413a install \
|
||||
--ucp-node <UCP_NODE_HOSTNAME> \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
Note: Use --ucp-ca "$(cat ca.pem)" instead of --ucp-insecure-tls for a production deployment.
|
||||
> **Note**: Use `--ucp-ca "$(cat ca.pem)"` instead of `--ucp-insecure-tls` for a production deployment.
|
||||
|
||||
## Options
|
||||
|
||||
|
|
|
@ -24,11 +24,13 @@ command.
|
|||
|
||||
Example usage:
|
||||
|
||||
```bash
|
||||
$ docker run -it --rm docker/dtr:2.4.1 install \
|
||||
--ucp-node <UCP_NODE_HOSTNAME> \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
Note: Use --ucp-ca "$(cat ca.pem)" instead of --ucp-insecure-tls for a production deployment.
|
||||
> **Note**: Use `--ucp-ca "$(cat ca.pem)"` instead of `--ucp-insecure-tls` for a production deployment.
|
||||
|
||||
## Options
|
||||
|
||||
|
|
|
@ -0,0 +1,243 @@
|
|||
---
|
||||
title: Troubleshoot Docker Trusted Registry
|
||||
description: Learn how to troubleshoot your DTR installation.
|
||||
keywords: registry, monitor, troubleshoot
|
||||
redirect_from: /ee/dtr/admin/monitor-and-troubleshoot/troubleshoot-with-logs
|
||||
---
|
||||
|
||||
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 }
|
||||
|
||||
### via RethinkCLI
|
||||
|
||||
As of v2.5.5, the [RethinkCLI has been removed](/ee/dtr/release-notes/#255) from the RethinkDB image along with other unused components. You can now run RethinkCLI from a separate image in the `dockerhubenterprise` organization. Note that the commands below are using separate tags for non-interactive and interactive modes.
|
||||
|
||||
#### Non-interactive
|
||||
|
||||
Use SSH to log into a node that is running a DTR replica, and run the following:
|
||||
|
||||
{% raw %}
|
||||
```bash
|
||||
# List problems in the cluster detected by the current node.
|
||||
REPLICA_ID=$(docker container ls --filter=name=dtr-rethink --format '{{.Names}}' | cut -d'/' -f2 | cut -d'-' -f3 | head -n 1) && echo 'r.db("rethinkdb").table("current_issues")' | docker run --rm -i --net dtr-ol -v "dtr-ca-${REPLICA_ID}:/ca" -e DTR_REPLICA_ID=$REPLICA_ID dockerhubenterprise/rethinkcli:v2.2.0-ni non-interactive
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
On a healthy cluster the output will be `[]`.
|
||||
|
||||
#### Interactive
|
||||
|
||||
Starting in DTR 2.5.5, you can run RethinkCLI from a separate image. First, set an environment variable for your DTR replica ID:
|
||||
|
||||
```bash
|
||||
REPLICA_ID=$(docker inspect -f '{{.Name}}' $(docker ps -q -f name=dtr-rethink) | cut -f 3 -d '-')
|
||||
```
|
||||
|
||||
RethinkDB stores data in different databases that contain multiple tables. Run the following command to get into interactive mode
|
||||
and query the contents of the DB:
|
||||
|
||||
```bash
|
||||
docker run -it --rm --net dtr-ol -v dtr-ca-$REPLICA_ID:/ca dockerhubenterprise/rethinkcli:v2.3.0 $REPLICA_ID
|
||||
```
|
||||
|
||||
```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()
|
||||
[ 'blob_links',
|
||||
'blobs',
|
||||
'client_tokens',
|
||||
'content_caches',
|
||||
'events',
|
||||
'layer_vuln_overrides',
|
||||
'manifests',
|
||||
'metrics',
|
||||
'namespace_team_access',
|
||||
'poll_mirroring_policies',
|
||||
'promotion_policies',
|
||||
'properties',
|
||||
'pruning_policies',
|
||||
'push_mirroring_policies',
|
||||
'repositories',
|
||||
'repository_team_access',
|
||||
'scanned_images',
|
||||
'scanned_layers',
|
||||
'tags',
|
||||
'user_settings',
|
||||
'webhooks' ]
|
||||
|
||||
# List the entries in the repositories table
|
||||
> r.db('dtr2').table('repositories')
|
||||
[ { enableManifestLists: false,
|
||||
id: 'ac9614a8-36f4-4933-91fa-3ffed2bd259b',
|
||||
immutableTags: false,
|
||||
name: 'test-repo-1',
|
||||
namespaceAccountID: 'fc3b4aec-74a3-4ba2-8e62-daed0d1f7481',
|
||||
namespaceName: 'admin',
|
||||
pk: '3a4a79476d76698255ab505fb77c043655c599d1f5b985f859958ab72a4099d6',
|
||||
pulls: 0,
|
||||
pushes: 0,
|
||||
scanOnPush: false,
|
||||
tagLimit: 0,
|
||||
visibility: 'public' },
|
||||
{ enableManifestLists: false,
|
||||
id: '9f43f029-9683-459f-97d9-665ab3ac1fda',
|
||||
immutableTags: false,
|
||||
longDescription: '',
|
||||
name: 'testing',
|
||||
namespaceAccountID: 'fc3b4aec-74a3-4ba2-8e62-daed0d1f7481',
|
||||
namespaceName: 'admin',
|
||||
pk: '6dd09ac485749619becaff1c17702ada23568ebe0a40bb74a330d058a757e0be',
|
||||
pulls: 0,
|
||||
pushes: 0,
|
||||
scanOnPush: false,
|
||||
shortDescription: '',
|
||||
tagLimit: 1,
|
||||
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/).
|
||||
|
||||
### via API
|
||||
|
||||
To check on the overall status of your DTR cluster without interacting with RethinkCLI, run the following API request:
|
||||
|
||||
```bash
|
||||
curl -u admin:$TOKEN -X GET "https://<dtr-url>/api/v0/meta/cluster_status" -H "accept: application/json"
|
||||
```
|
||||
|
||||
#### Example API Response
|
||||
```none
|
||||
{
|
||||
"rethink_system_tables": {
|
||||
"cluster_config": [
|
||||
{
|
||||
"heartbeat_timeout_secs": 10,
|
||||
"id": "heartbeat"
|
||||
}
|
||||
],
|
||||
"current_issues": [],
|
||||
"db_config": [
|
||||
{
|
||||
"id": "339de11f-b0c2-4112-83ac-520cab68d89c",
|
||||
"name": "notaryserver"
|
||||
},
|
||||
{
|
||||
"id": "aa2e893f-a69a-463d-88c1-8102aafebebc",
|
||||
"name": "dtr2"
|
||||
},
|
||||
{
|
||||
"id": "bdf14a41-9c31-4526-8436-ab0fed00c2fd",
|
||||
"name": "jobrunner"
|
||||
},
|
||||
{
|
||||
"id": "f94f0e35-b7b1-4a2f-82be-1bdacca75039",
|
||||
"name": "notarysigner"
|
||||
}
|
||||
],
|
||||
"server_status": [
|
||||
{
|
||||
"id": "9c41fbc6-bcf2-4fad-8960-d117f2fdb06a",
|
||||
"name": "dtr_rethinkdb_5eb9459a7832",
|
||||
"network": {
|
||||
"canonical_addresses": [
|
||||
{
|
||||
"host": "dtr-rethinkdb-5eb9459a7832.dtr-ol",
|
||||
"port": 29015
|
||||
}
|
||||
],
|
||||
"cluster_port": 29015,
|
||||
"connected_to": {
|
||||
"dtr_rethinkdb_56b65e8c1404": true
|
||||
},
|
||||
"hostname": "9e83e4fee173",
|
||||
"http_admin_port": "<no http admin>",
|
||||
"reql_port": 28015,
|
||||
"time_connected": "2019-02-15T00:19:22.035Z"
|
||||
},
|
||||
}
|
||||
...
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## 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
|
||||
```
|
|
@ -1,138 +0,0 @@
|
|||
---
|
||||
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:
|
||||
|
||||
```none
|
||||
docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} remove \
|
||||
--ucp-insecure-tls
|
||||
```
|
||||
|
||||
And then:
|
||||
|
||||
```none
|
||||
docker run -it --rm \
|
||||
{{ page.dtr_org }}/{{ page.dtr_repo }}:{{ page.dtr_version }} join \
|
||||
--ucp-node <ucp-node-name> \
|
||||
--ucp-insecure-tls
|
||||
```
|
|
@ -20,9 +20,9 @@ docker run -it --rm docker/dtr \
|
|||
|
||||
This command forcefully removes all containers and volumes associated with
|
||||
a DTR replica without notifying the rest of the cluster. Use this command
|
||||
on all replicas uninstall DTR.
|
||||
on all replicas to uninstall DTR.
|
||||
|
||||
Use the 'remove' command to gracefully scale down your DTR cluster.
|
||||
Use `docker/dtr remove` to gracefully scale down your DTR cluster.
|
||||
|
||||
|
||||
## Options
|
||||
|
|
|
@ -14,10 +14,10 @@ upgrade your installation to the latest release.
|
|||
|
||||
(18 Jan 2017)
|
||||
|
||||
Note: UCP 1.1.6 supports Docker Engine 1.12 but does not use the built-in
|
||||
orchestration capabilities provided by the Docker Engine with swarm mode enabled.
|
||||
When installing this UCP version on a Docker Engine 1.12 host, UCP creates a
|
||||
cluster using the older Docker Swarm v1.2.
|
||||
> **Note**: UCP 1.1.6 supports Docker Engine 1.12 but does not use the built-in
|
||||
> orchestration capabilities provided by the Docker Engine with swarm mode enabled.
|
||||
> When installing this UCP version on a Docker Engine 1.12 host, UCP creates a
|
||||
> cluster using the older Docker Swarm v1.2.
|
||||
|
||||
**Security Update**
|
||||
|
||||
|
@ -41,10 +41,10 @@ the [permissions levels section](user-management/permission-levels.md) for more
|
|||
|
||||
(8 Dec 2016)
|
||||
|
||||
Note: UCP 1.1.5 supports Docker Engine 1.12 but does not use the built-in
|
||||
orchestration capabilities provided by the Docker Engine with swarm mode enabled.
|
||||
When installing this UCP version on a Docker Engine 1.12 host, UCP creates a
|
||||
cluster using the older Docker Swarm v1.2.
|
||||
> **Note**: UCP 1.1.5 supports Docker Engine 1.12 but does not use the built-in
|
||||
> orchestration capabilities provided by the Docker Engine with swarm mode enabled.
|
||||
> When installing this UCP version on a Docker Engine 1.12 host, UCP creates a
|
||||
> cluster using the older Docker Swarm v1.2.
|
||||
|
||||
**Bug fixes**
|
||||
|
||||
|
@ -61,10 +61,10 @@ the authentication process.
|
|||
|
||||
(29 Sept 2016)
|
||||
|
||||
Note: UCP 1.1.4 supports Docker Engine 1.12 but does not use the built-in
|
||||
orchestration capabilities provided by the Docker Engine with swarm mode enabled.
|
||||
When installing this UCP version on a Docker Engine 1.12 host, UCP creates a
|
||||
cluster using Docker Swarm v1.2.5.
|
||||
> **Note**: UCP 1.1.4 supports Docker Engine 1.12 but does not use the built-in
|
||||
> orchestration capabilities provided by the Docker Engine with swarm mode enabled.
|
||||
> When installing this UCP version on a Docker Engine 1.12 host, UCP creates a
|
||||
> cluster using Docker Swarm v1.2.5.
|
||||
|
||||
**Bug fixes**
|
||||
|
||||
|
@ -76,10 +76,10 @@ organization accounts
|
|||
|
||||
## Version 1.1.3
|
||||
|
||||
Note: UCP 1.1.3 supports Docker Engine 1.12 but does not use the built-in
|
||||
orchestration capabilities provided by the Docker Engine with swarm mode enabled.
|
||||
When installing this UCP version on a Docker Engine 1.12 host, UCP creates a
|
||||
cluster using Docker Swarm v1.2.5.
|
||||
> **Note**: UCP 1.1.3 supports Docker Engine 1.12 but does not use the built-in
|
||||
> orchestration capabilities provided by the Docker Engine with swarm mode enabled.
|
||||
> When installing this UCP version on a Docker Engine 1.12 host, UCP creates a
|
||||
> cluster using Docker Swarm v1.2.5.
|
||||
|
||||
**Security Update**
|
||||
|
||||
|
@ -125,9 +125,9 @@ enabled, and is not compatible with swarm-mode based APIs, e.g. `docker service`
|
|||
|
||||
## Version 1.1.2
|
||||
|
||||
Note: UCP 1.1.2 supports Docker Engine 1.12 but doesn't use the new clustering
|
||||
capabilities provided by the Docker swarm mode. When installing this UCP version
|
||||
on a Docker Engine 1.12, UCP creates a "classic" Docker Swarm 1.2.3 cluster.
|
||||
> **Note**: UCP 1.1.2 supports Docker Engine 1.12 but doesn't use the new clustering
|
||||
> capabilities provided by the Docker swarm mode. When installing this UCP version
|
||||
> on a Docker Engine 1.12, UCP creates a "classic" Docker Swarm 1.2.3 cluster.
|
||||
|
||||
**Features**
|
||||
|
||||
|
|
|
@ -63,8 +63,6 @@ might be serving your request. Make sure you're connecting directly to the
|
|||
URL of a manager node, and not a load balancer. In addition, pinging the
|
||||
endpoint with a `HEAD` results in a 404 error code. Use a `GET` request instead.
|
||||
|
||||
|
||||
|
||||
## Where to go next
|
||||
|
||||
* [Troubleshoot with logs](troubleshoot-with-logs.md)
|
||||
|
|
|
@ -194,7 +194,8 @@ apply two labels to your service:
|
|||
com.docker.ucp.mesh.http.1=external_route=http://example.org,redirect=https://example.org
|
||||
com.docker.ucp.mesh.http.2=external_route=sni://example.org
|
||||
```
|
||||
Note: It is not possible to redirect HTTPS to HTTP.
|
||||
|
||||
> **Note**: It is not possible to redirect HTTPS to HTTP.
|
||||
|
||||
### X-Forwarded-For header
|
||||
|
||||
|
|
|
@ -41,6 +41,17 @@ As part of your backup policy you should regularly create backups of UCP.
|
|||
DTR is backed up independently.
|
||||
[Learn about DTR backups and recovery](../../../../dtr/2.3/guides/admin/backups-and-disaster-recovery.md).
|
||||
|
||||
> Warning: On UCP versions 3.0.0 - 3.0.7, before performing a UCP backup, you must clean up multiple /dev/shm mounts in the ucp-kublet entrypoint script by running the following script on all nodes via cron job:
|
||||
|
||||
```
|
||||
SHM_MOUNT=$(grep -m1 '^tmpfs./dev/shm' /proc/mounts)
|
||||
while [ $(grep -cm2 '^tmpfs./dev/shm' /proc/mounts) -gt 1 ]; do
|
||||
sudo umount /dev/shm
|
||||
done
|
||||
grep -q '^tmpfs./dev/shm' /proc/mounts || sudo mount "${SHM_MOUNT}"
|
||||
```
|
||||
For additional details, refer to [Docker KB000934](https://success.docker.com/article/more-than-one-dev-shm-mount-in-the-host-namespace){: target="_blank"}
|
||||
|
||||
To create a UCP backup, run the `{{ page.ucp_org }}/{{ page.ucp_repo }}:{{ page.ucp_version }} backup` command
|
||||
on a single UCP manager. This command creates a tar archive with the
|
||||
contents of all the [volumes used by UCP](../architecture.md) to persist data
|
||||
|
|
|
@ -1,149 +0,0 @@
|
|||
---
|
||||
description: Set up and configure content trust and signing policy for use with a continuous integration system
|
||||
keywords: cup, trust, notary, security, continuous integration
|
||||
title: Use trusted images for continuous integration
|
||||
---
|
||||
|
||||
The document provides a minimal example on setting up Docker Content Trust (DCT) in
|
||||
Universal Control Plane (UCP) for use with a Continuous Integration (CI) system. It
|
||||
covers setting up the necessary accounts and trust delegations to restrict only those
|
||||
images built by your CI system to be deployed to your UCP managed cluster.
|
||||
|
||||
## Set up UCP accounts and teams
|
||||
|
||||
The first step is to create a user account for your CI system. For the purposes of
|
||||
this document we will assume you are using Jenkins as your CI system and will therefore
|
||||
name the account "jenkins". As an admin user logged in to UCP, navigate to "User Management"
|
||||
and select "Add User". Create a user with the name "jenkins" and set a strong password.
|
||||
|
||||
Next, create a team called "CI" and add the "jenkins" user to this team. All signing
|
||||
policy is team based, so if we want to grant only a single user the ability to sign images
|
||||
destined to be deployed on the cluster, we must create a team for this one user.
|
||||
|
||||
## Set up the signing policy
|
||||
|
||||
While still logged in as an admin, navigate to "Admin Settings" and select the "Content Trust"
|
||||
subsection. Select the checkbox to enable content trust and in the select box that appears,
|
||||
select the "CI" team we have just created. Save the settings.
|
||||
|
||||
This policy will require that every image that referenced in a `docker image pull`,
|
||||
`docker container run`, or `docker service create` must be signed by a key corresponding
|
||||
to a member of the "CI" team. In this case, the only member is the "jenkins" user.
|
||||
|
||||
## Create keys for the Jenkins user
|
||||
|
||||
The signing policy implementation uses the certificates issued in user client bundles
|
||||
to connect a signature to a user. Using an incognito browser window (or otherwise),
|
||||
log in to the "jenkins" user account you created earlier. Download a client bundle for
|
||||
this user. It is also recommended to change the description associated with the public
|
||||
key stored in UCP such that you can identify in the future which key is being used for
|
||||
signing.
|
||||
|
||||
Each time a user retrieves a new client bundle, a new keypair is generated. It is therefore
|
||||
necessary to keep track of a specific bundle that a user chooses to designate as their signing bundle.
|
||||
|
||||
Once you have decompressed the client bundle, the only two files you need for the purposes
|
||||
of signing are `cert.pem` and `key.pem`. These represent the public and private parts of
|
||||
the user's signing identity respectively. We will load the `key.pem` file onto the Jenkins
|
||||
servers, and use `cert.pem` to create delegations for the "jenkins" user in our
|
||||
Trusted Collection.
|
||||
|
||||
## Prepare the Jenkins server
|
||||
|
||||
### Load `key.pem` on Jenkins
|
||||
|
||||
You will need to use the notary client to load keys onto your Jenkins server. Simply run
|
||||
`notary -d /path/to/.docker/trust key import /path/to/key.pem`. You will be asked to set
|
||||
a password to encrypt the key on disk. For automated signing, this password can be configured
|
||||
into the environment under the variable name `DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE`. The `-d`
|
||||
flag to the command specifies the path to the `trust` subdirectory within the server's `docker`
|
||||
configuration directory. Typically this is found at `~/.docker/trust`.
|
||||
|
||||
### Enable content trust
|
||||
|
||||
There are two ways to enable content trust: globally, and per operation. To enabled content
|
||||
trust globally, set the environment variable `DOCKER_CONTENT_TRUST=1`. To enable on a per
|
||||
operation basis, wherever you run `docker image push` in your Jenkins scripts, add the flag
|
||||
`--disable-content-trust=false`. You may wish to use this second option if you only want
|
||||
to sign some images.
|
||||
|
||||
The Jenkins server is now prepared to sign images, but we need to create delegations referencing
|
||||
the key to give it the necessary permissions.
|
||||
|
||||
## Initialize a repository
|
||||
|
||||
Any commands displayed in this section should _not_ be run from the Jenkins server. You
|
||||
will most likely want to run them from your local system.
|
||||
|
||||
If this is a new repository, create it in Docker Trusted Registry (DTR) or Docker Hub,
|
||||
depending on which you use to store your images, before proceeding further.
|
||||
|
||||
We will now initialize the trust data and create the delegation that provides the Jenkins
|
||||
key with permissions to sign content. The following commands initialize the trust data and
|
||||
rotate snapshotting responsibilities to the server. This is necessary to ensure human involvement
|
||||
is not required to publish new content.
|
||||
|
||||
```
|
||||
notary -s https://my_notary_server.com -d ~/.docker/trust init my_repository
|
||||
notary -s https://my_notary_server.com -d ~/.docker/trust key rotate my_repository snapshot -r
|
||||
notary -s https://my_notary_server.com -d ~/.docker/trust publish my_repository
|
||||
```
|
||||
|
||||
The `-s` flag specifies the server hosting a notary service. If you are operating against
|
||||
Docker Hub, this will be `https://notary.docker.io`. If you are operating against your own DTR
|
||||
instance, this will be the same hostname you use in image names when running docker commands preceded
|
||||
by the `https://` scheme. For example, if you would run `docker image push my_dtr:4443/me/an_image` the value
|
||||
of the `-s` flag would be expected to be `https://my_dtr:4443`.
|
||||
|
||||
If you use DTR, the name of the repository should be identical to the full name you use
|
||||
in a `docker image push` command. If you use Docker Hub, the name you use in a `docker image push`
|
||||
must be preceded by `docker.io/`. For instance, if you ran `docker image push me/alpine`, you then
|
||||
use `notary init docker.io/me/alpine`.
|
||||
|
||||
For brevity, we will exclude the `-s` and `-d` flags from subsequent command, but be aware you
|
||||
will still need to provide them for the commands to work correctly.
|
||||
|
||||
Now that the repository is initialized, we need to create the delegations for Jenkins. Docker
|
||||
Content Trust treats a delegation role called `targets/releases` specially. It considers this
|
||||
delegation to contain the canonical list of published images for the repository. For this reason,
|
||||
you should add all users to this delegation with the following command:
|
||||
|
||||
```
|
||||
notary delegation add my_repository targets/releases --all-paths /path/to/cert.pem
|
||||
```
|
||||
|
||||
This solves a number of prioritization problems that would result from the need to determine
|
||||
which delegation should ultimately be trusted for a specific image. However, since any user
|
||||
can sign the `targets/releases` role it is not trusted
|
||||
in determining if a signing policy has been met. Therefore, you also need to create a
|
||||
delegation specifically for Jenkins:
|
||||
|
||||
```
|
||||
notary delegation add my_repository targets/jenkins --all-paths /path/to/cert.pem
|
||||
```
|
||||
|
||||
We will then publish both these updates (remember to add the correct `-s` and `-d` flags):
|
||||
|
||||
```
|
||||
notary publish my_repository
|
||||
```
|
||||
|
||||
Informational (Advanced): If we included the `targets/releases` role in determining if a signing policy
|
||||
had been met, we would run into the situation of images being opportunistically deployed when
|
||||
an appropriate user signs. In the scenario we have described so far, only images signed by
|
||||
the "CI" team (containing only the "jenkins" user) should be deployable. If a user "Moby" could
|
||||
also sign images but was not part of the "CI" team, they might sign and publish a new `targets/releases`
|
||||
that contained their image. UCP would refuse to deploy this image because it was not signed
|
||||
by the "CI" team. However, the next time Jenkins published an image, it would update and sign
|
||||
the `targets/releases` role as whole, enabling "Moby" to deploy their image.
|
||||
|
||||
## Conclusion
|
||||
|
||||
With the Trusted Collection initialized, and delegations created, the Jenkins server will
|
||||
now use the key we imported to sign any images we push to this repository.
|
||||
|
||||
Through either the Docker CLI, or the UCP browser interface, we will find that any images
|
||||
that do not meet our signing policy cannot be used. The signing policy we set up requires
|
||||
that the "CI" team must have signed any image we attempt to `docker image pull`, `docker container run`,
|
||||
or `docker service create`, and the only member of that team is the "jenkins" user. This
|
||||
restricts us to only running images that were published by our Jenkins CI system.
|
|
@ -40,6 +40,10 @@ Docker UCP requires each node on the cluster to have a static IP address.
|
|||
Before installing UCP, ensure your network and nodes are configured to support
|
||||
this.
|
||||
|
||||
## Avoid IP range conflicts
|
||||
|
||||
The `service-cluster-ip-range` Kubernetes API Server flag is currently set to `10.96.0.0/16` and cannot be changed.
|
||||
|
||||
## Time synchronization
|
||||
|
||||
In distributed systems like Docker UCP, time synchronization is critical
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
---
|
||||
title: Upgrade to UCP 2.2
|
||||
title: Upgrade to UCP 3.0
|
||||
description: Learn how to upgrade Docker Universal Control Plane with minimal impact to your users.
|
||||
keywords: UCP, upgrade, update
|
||||
---
|
||||
|
||||
This page guides you in upgrading Docker Universal Control Plane (UCP) to
|
||||
version 2.2.
|
||||
version 3.0.
|
||||
|
||||
Before upgrading to a new version of UCP, check the
|
||||
[release notes](../../release-notes/index.md) for this version for information
|
||||
|
@ -22,7 +22,7 @@ impact to your users.
|
|||
Don't make changes to UCP configurations while you're upgrading.
|
||||
This can lead to misconfigurations that are difficult to troubleshoot.
|
||||
|
||||
> Note: If you are upgrading a cluster to UCP 3.0.2 or higher on Microsoft
|
||||
> **Note**: If you are upgrading a cluster to UCP 3.0.2 or higher on Microsoft
|
||||
> Azure then please ensure all of the Azure [prerequisities](install-on-azure.md/#azure-prerequisites)
|
||||
> are met.
|
||||
|
||||
|
@ -37,8 +37,8 @@ This allows you to recover if something goes wrong during the upgrade process.
|
|||
> Upgrading and backup archives
|
||||
>
|
||||
> The backup archive is version-specific, so you can't use it during the
|
||||
> upgrade process. For example, if you create a backup archive for a UCP 2.1
|
||||
> swarm, you can't use the archive file after you upgrade to UCP 2.2.
|
||||
> upgrade process. For example, if you create a backup archive for a UCP 2.2
|
||||
> swarm, you can't use the archive file after you upgrade to UCP 3.0.
|
||||
|
||||
## Upgrade Docker Engine
|
||||
|
||||
|
@ -112,13 +112,13 @@ all the nodes managed by UCP are healthy.
|
|||
|
||||
## Recommended upgrade paths
|
||||
|
||||
If you're running a UCP version that's lower than 2.1, first upgrade to the
|
||||
latest 2.1 version, then upgrade to 2.2. Use these rules for your upgrade
|
||||
path to UCP 2.2:
|
||||
If you're running a UCP version that's lower than 2.2, first upgrade to the
|
||||
latest 2.2 version, then upgrade to 3.0. Use these rules for your upgrade
|
||||
path to UCP 3.0:
|
||||
|
||||
- From UCP 1.1: UCP 1.1 -> UCP 2.1 -> UCP 2.2
|
||||
- From UCP 2.0: UCP 2.0 -> UCP 2.1 -> UCP 2.2
|
||||
- From UCP 2.1: UCP 2.1 -> UCP 2.2
|
||||
- From UCP 1.1: UCP 1.1 -> UCP 2.2 -> UCP 3.0
|
||||
- From UCP 2.0: UCP 2.0 -> UCP 2.2 -> UCP 3.0
|
||||
- From UCP 2.2: UCP 2.2 -> UCP 3.0
|
||||
|
||||
## Where to go next
|
||||
|
||||
|
|
|
@ -64,6 +64,10 @@ URL of a manager node, and not a load balancer. In addition, pinging the
|
|||
endpoint with a `HEAD` results in a 404 error code. Use a `GET` request instead.
|
||||
|
||||
|
||||
## Monitoring disk usage
|
||||
|
||||
Web UI disk usage metrics, including free space, only reflect the Docker managed portion of the filesystem: `/var/lib/docker`. To monitor the total space available on each filesystem of a UCP worker or manager, you must deploy a third party monitoring solution to monitor the operating system.
|
||||
|
||||
|
||||
## Where to go next
|
||||
|
||||
|
|
|
@ -5,13 +5,13 @@ keywords: ucp, architecture
|
|||
---
|
||||
|
||||
Universal Control Plane is a containerized application that runs on
|
||||
[Docker Enterprise Edition](/ee/index.md) and extends its functionality
|
||||
to make it easier to deploy, configure, and monitor your applications at scale.
|
||||
[Docker Enterprise Edition](/ee/index.md), extending its functionality
|
||||
to simplify the deployment, configuration, and monitoring of your applications at scale.
|
||||
|
||||
UCP also secures Docker with role-based access control so that only authorized
|
||||
users can make changes and deploy applications to your Docker cluster.
|
||||
|
||||

|
||||
{: .with-border}
|
||||
|
||||
Once Universal Control Plane (UCP) instance is deployed, developers and IT
|
||||
operations no longer interact with Docker Engine directly, but interact with
|
||||
|
@ -25,7 +25,7 @@ the Docker CLI client and Docker Compose.
|
|||
Docker UCP leverages the clustering and orchestration functionality provided
|
||||
by Docker.
|
||||
|
||||

|
||||
{: .with-border}
|
||||
|
||||
A swarm is a collection of nodes that are in the same Docker cluster.
|
||||
[Nodes](/engine/swarm/key-concepts.md) in a Docker swarm operate in one of two
|
||||
|
@ -66,38 +66,89 @@ on a node depend on whether the node is a manager or a worker.
|
|||
> on Windows, the `ucp-agent` component is named `ucp-agent-win`.
|
||||
> [Learn about architecture-specific images](admin/install/architecture-specific-images.md).
|
||||
|
||||
Internally, UCP uses the following components:
|
||||
|
||||
* Calico 3.0.1
|
||||
* Kubernetes 1.8.11
|
||||
|
||||
### UCP components in manager nodes
|
||||
|
||||
Manager nodes run all UCP services, including the web UI and data stores that
|
||||
persist the state of UCP. These are the UCP services running on manager nodes:
|
||||
|
||||
| UCP component | Description |
|
||||
|:--------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| ucp-agent | Monitors the node and ensures the right UCP services are running |
|
||||
| ucp-reconcile | When ucp-agent detects that the node is not running the right UCP components, it starts the ucp-reconcile container to converge the node to its desired state. It is expected for the ucp-reconcile container to remain in an exited state when the node is healthy. |
|
||||
| ucp-auth-api | The centralized service for identity and authentication used by UCP and DTR |
|
||||
| ucp-auth-store | Stores authentication configurations and data for users, organizations, and teams |
|
||||
| ucp-auth-worker | Performs scheduled LDAP synchronizations and cleans authentication and authorization data |
|
||||
| ucp-client-root-ca | A certificate authority to sign client bundles |
|
||||
| ucp-cluster-root-ca | A certificate authority used for TLS communication between UCP components |
|
||||
| ucp-controller | The UCP web server |
|
||||
| ucp-dsinfo | Docker system information collection script to assist with troubleshooting |
|
||||
| ucp-kv | Used to store the UCP configurations. Don't use it in your applications, since it's for internal use only |
|
||||
| ucp-metrics | Used to collect and process metrics for a node, like the disk space available |
|
||||
| ucp-proxy | A TLS proxy. It allows secure access to the local Docker Engine to UCP components |
|
||||
| ucp-swarm-manager | Used to provide backwards-compatibility with Docker Swarm |
|
||||
| UCP component | Description |
|
||||
|:--------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| k8s_calico-kube-controllers | A cluster-scoped Kubernetes controller used to coordinate Calico networking. Runs on one manager node only. |
|
||||
| k8s_calico-node | The Calico node agent, which coordinates networking fabric according to the cluster-wide Calico configuration. Part of the `calico-node` daemonset. Runs on all nodes. Configure the CNI plugin by using the `--cni-installer-url` flag. If this flag isn't set, UCP uses Calico as the default CNI plugin. |
|
||||
| k8s_install-cni_calico-node | A container that's responsible for installing the Calico CNI plugin binaries and configuration on each host. Part of the `calico-node` daemonset. Runs on all nodes. |
|
||||
| k8s_POD_calico-node | Pause container for the `calico-node` pod. |
|
||||
| k8s_POD_calico-kube-controllers | Pause container for the `calico-kube-controllers` pod. |
|
||||
| k8s_POD_compose | Pause container for the `compose` pod. |
|
||||
| k8s_POD_kube-dns | Pause container for the `kube-dns` pod. |
|
||||
| k8s_ucp-dnsmasq-nanny | A dnsmasq instance used in the Kubernetes DNS Service. Part of the `kube-dns` deployment. Runs on one manager node only. |
|
||||
| k8s_ucp-kube-compose | A custom Kubernetes resource component that's responsible for translating Compose files into Kubernetes constructs. Part of the `compose` deployment. Runs on one manager node only. |
|
||||
| k8s_ucp-kube-dns | The main Kubernetes DNS Service, used by pods to [resolve service names](https://v1-8.docs.kubernetes.io/docs/concepts/services-networking/dns-pod-service/). Part of the `kube-dns` deployment. Runs on one manager node only. Provides service discovery for Kubernetes services and pods. A set of three containers deployed via Kubernetes as a single pod. |
|
||||
| k8s_ucp-kubedns-sidecar | Health checking and metrics daemon of the Kubernetes DNS Service. Part of the `kube-dns` deployment. Runs on one manager node only. |
|
||||
| ucp-agent | Monitors the node and ensures the right UCP services are running. |
|
||||
| ucp-auth-api | The centralized service for identity and authentication used by UCP and DTR. |
|
||||
| ucp-auth-store | Stores authentication configurations and data for users, organizations, and teams. |
|
||||
| ucp-auth-worker | Performs scheduled LDAP synchronizations and cleans authentication and authorization data. |
|
||||
| ucp-client-root-ca | A certificate authority to sign client bundles. |
|
||||
| ucp-cluster-root-ca | A certificate authority used for TLS communication between UCP components. |
|
||||
| ucp-controller | The UCP web server. |
|
||||
| ucp-dsinfo | Docker system information collection script to assist with troubleshooting. |
|
||||
| ucp-interlock | Monitors swarm workloads configured to use Layer 7 routing. Only runs when you enable Layer 7 routing. |
|
||||
| ucp-interlock-proxy | A service that provides load balancing and proxying for swarm workloads. Only runs when you enable Layer 7 routing. |
|
||||
| ucp-kube-apiserver | A master component that serves the Kubernetes API. It persists its state in `etcd` directly, and all other components communicate with API server directly. |
|
||||
| ucp-kube-controller-manager | A master component that manages the desired state of controllers and other Kubernetes objects. It monitors the API server and performs background tasks when needed. |
|
||||
| ucp-kubelet | The Kubernetes node agent running on every node, which is responsible for running Kubernetes pods, reporting the health of the node, and monitoring resource usage. |
|
||||
| ucp-kube-proxy | The networking proxy running on every node, which enables pods to contact Kubernetes services and other pods, via cluster IP addresses. |
|
||||
| ucp-kube-scheduler | A master component that handles scheduling of pods. It communicates with the API server only to obtain workloads that need to be scheduled. |
|
||||
| ucp-kv | Used to store the UCP configurations. Don't use it in your applications, since it's for internal use only. Also used by Kubernetes components. |
|
||||
| ucp-metrics | Used to collect and process metrics for a node, like the disk space available. |
|
||||
| ucp-proxy | A TLS proxy. It allows secure access to the local Docker Engine to UCP components. |
|
||||
| ucp-reconcile | When ucp-agent detects that the node is not running the right UCP components, it starts the ucp-reconcile container to converge the node to its desired state. It is expected for the ucp-reconcile container to remain in an exited state when the node is healthy. |
|
||||
| ucp-swarm-manager | Used to provide backwards-compatibility with Docker Swarm. |
|
||||
|
||||
|
||||
### UCP components in worker nodes
|
||||
|
||||
Worker nodes are the ones where you run your applications. These are the UCP
|
||||
services running on worker nodes:
|
||||
|
||||
| UCP component | Description |
|
||||
|:--------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| ucp-agent | Monitors the node and ensures the right UCP services are running |
|
||||
| ucp-dsinfo | Docker system information collection script to assist with troubleshooting |
|
||||
| ucp-reconcile | When ucp-agent detects that the node is not running the right UCP components, it starts the ucp-reconcile container to converge the node to its desired state. It is expected for the ucp-reconcile container to remain in an exited state when the node is healthy. |
|
||||
| ucp-proxy | A TLS proxy. It allows secure access to the local Docker Engine to UCP components |
|
||||
| UCP component | Description |
|
||||
|:----------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| k8s_calico-node | The Calico node agent, which coordinates networking fabric according to the cluster-wide Calico configuration. Part of the `calico-node` daemonset. Runs on all nodes. |
|
||||
| k8s_install-cni_calico-node | A container that's responsible for installing the Calico CNI plugin binaries and configuration on each host. Part of the `calico-node` daemonset. Runs on all nodes. |
|
||||
| k8s_POD_calico-node | "Pause" container for the Calico-node pod. By default, this container is hidden, but you can see it by running `docker ps -a`. |
|
||||
| ucp-agent | Monitors the node and ensures the right UCP services are running |
|
||||
| ucp-interlock-extension | Helper service that reconfigures the ucp-interlock-proxy service based on the swarm workloads that are running. |
|
||||
| ucp-interlock-proxy | A service that provides load balancing and proxying for swarm workloads. Only runs when you enable Layer 7 routing. |
|
||||
| ucp-dsinfo | Docker system information collection script to assist with troubleshooting |
|
||||
| ucp-kubelet | The kubernetes node agent running on every node, which is responsible for running Kubernetes pods, reporting the health of the node, and monitoring resource usage |
|
||||
| ucp-kube-proxy | The networking proxy running on every node, which enables pods to contact Kubernetes services and other pods, via cluster IP addresses |
|
||||
| ucp-reconcile | When ucp-agent detects that the node is not running the right UCP components, it starts the ucp-reconcile container to converge the node to its desired state. It is expected for the ucp-reconcile container to remain in an exited state when the node is healthy. |
|
||||
| ucp-proxy | A TLS proxy. It allows secure access to the local Docker Engine to UCP components |
|
||||
|
||||
## Pause containers
|
||||
|
||||
Every pod in Kubernetes has a _pause_ container, which is an "empty" container
|
||||
that bootstraps the pod to establish all of the namespaces. Pause containers
|
||||
hold the cgroups, reservations, and namespaces of a pod before its individual
|
||||
containers are created. The pause container's image is always present, so the
|
||||
allocation of the pod's resources is instantaneous.
|
||||
|
||||
By default, pause containers are hidden, but you can see them by running
|
||||
`docker ps -a`.
|
||||
|
||||
```
|
||||
docker ps -a | grep -I pause
|
||||
|
||||
8c9707885bf6 dockereng/ucp-pause:3.0.0-6d332d3 "/pause" 47 hours ago Up 47 hours k8s_POD_calico-kube-controllers-559f6948dc-5c84l_kube-system_d00e5130-1bf4-11e8-b426-0242ac110011_0
|
||||
258da23abbf5 dockereng/ucp-pause:3.0.0-6d332d3 "/pause" 47 hours ago Up 47 hours k8s_POD_kube-dns-6d46d84946-tqpzr_kube-system_d63acec6-1bf4-11e8-b426-0242ac110011_0
|
||||
2e27b5d31a06 dockereng/ucp-pause:3.0.0-6d332d3 "/pause" 47 hours ago Up 47 hours k8s_POD_compose-698cf787f9-dxs29_kube-system_d5866b3c-1bf4-11e8-b426-0242ac110011_0
|
||||
5d96dff73458 dockereng/ucp-pause:3.0.0-6d332d3 "/pause" 47 hours ago Up 47 hours k8s_POD_calico-node-4fjgv_kube-system_d043a0ea-1bf4-11e8-b426-0242ac110011_0
|
||||
```
|
||||
|
||||
## Volumes used by UCP
|
||||
|
||||
|
@ -129,6 +180,16 @@ driver.
|
|||
By default, the data for these volumes can be found at
|
||||
`/var/lib/docker/volumes/<volume-name>/_data`.
|
||||
|
||||
## Configurations use by UCP
|
||||
|
||||
| Configuration name | Description |
|
||||
|:-------------------------------|:-------------------------------------------------------------------------------------------------|
|
||||
| com.docker.interlock.extension | Configuration for the Interlock extension service that monitors and configures the proxy service |
|
||||
| com.docker.interlock.proxy | Configuration for the service responsible for handling user requests and routing them |
|
||||
| com.docker.license | The Docker EE license |
|
||||
| com.docker.ucp.config | The UCP controller configuration. Most of the settings available on the UCP UI are stored here |
|
||||
| com.docker.ucp.interlock.conf | Configuration for the core Interlock service |
|
||||
|
||||
## How you interact with UCP
|
||||
|
||||
There are two ways to interact with UCP: the web UI or the CLI.
|
||||
|
@ -136,17 +197,16 @@ There are two ways to interact with UCP: the web UI or the CLI.
|
|||
You can use the UCP web UI to manage your swarm, grant and revoke user
|
||||
permissions, deploy, configure, manage, and monitor your applications.
|
||||
|
||||

|
||||
{: .with-border}
|
||||
|
||||
UCP also exposes the standard Docker API, so you can continue using existing
|
||||
tools like the Docker CLI client. Since UCP secures your cluster with role-based
|
||||
access control, you need to configure your Docker CLI client and other client
|
||||
tools to authenticate your requests using
|
||||
[client certificates](user/access-ucp/index.md) that you can download
|
||||
[client certificates](user-access/index.md) that you can download
|
||||
from your UCP profile page.
|
||||
|
||||
|
||||
## Where to go next
|
||||
|
||||
* [System requirements](admin/install/system-requirements.md)
|
||||
* [Plan your installation](admin/install/system-requirements.md)
|
||||
- [System requirements](admin/install/system-requirements.md)
|
||||
- [Plan your installation](admin/install/plan-installation.md)
|
||||
|
|
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 135 KiB |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 108 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 156 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 100 KiB |
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 231 KiB |
After Width: | Height: | Size: 269 KiB |
After Width: | Height: | Size: 274 KiB |
After Width: | Height: | Size: 307 KiB |
After Width: | Height: | Size: 164 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 152 KiB |
|
@ -0,0 +1,204 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="321px" viewBox="0 0 740 321" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background: #FFFFFF;">
|
||||
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>interlock-architecture-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="5" r="4"></circle>
|
||||
<circle id="path-7" cx="4" cy="5" r="4"></circle>
|
||||
</defs>
|
||||
<g id="interlock-architecture-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="all" transform="translate(6.000000, 5.000000)">
|
||||
<text id="Docker-swarm-managed" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="8" y="297">Docker swarm managed with UCP</tspan>
|
||||
</text>
|
||||
<g id="nodes" transform="translate(133.000000, 100.000000)">
|
||||
<g id="workers" transform="translate(122.000000, 0.000000)">
|
||||
<g id="node-4" transform="translate(248.000000, 0.000000)">
|
||||
<g id="ucp" transform="translate(1.000000, 112.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="43.6953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="wordpress-copy" transform="translate(1.000000, 89.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="interlock-proxy:80" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="11.3442383" y="15">interlock-proxy:80</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="label">
|
||||
<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>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="108" height="135" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-3" transform="translate(124.000000, 0.000000)">
|
||||
<g id="ucp" transform="translate(1.000000, 112.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="43.6953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="wordpress-copy" transform="translate(1.000000, 89.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="interlock-proxy:80" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="11.3442383" y="15">interlock-proxy:80</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="label">
|
||||
<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>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="108" height="135" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-2">
|
||||
<g id="ucp" transform="translate(1.000000, 112.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="43.6953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="extension" transform="translate(1.000000, 89.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="interlock-extension" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="8.35400391" y="15">interlock-extension</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="wordpress-copy-2" transform="translate(1.000000, 66.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="wordpress:8000" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="16.0390625" y="15">wordpress:8000</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="label">
|
||||
<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>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="108" height="135" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="managers">
|
||||
<g id="node">
|
||||
<g id="ucp" transform="translate(1.000000, 112.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="43.6953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="interlock" transform="translate(1.000000, 89.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="ucp-interlock" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="22.6435547" y="15">ucp-interlock</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="label">
|
||||
<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>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="108" height="135" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="load-balancer" transform="translate(378.000000, 55.000000)">
|
||||
<g id="L7">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="234" 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="73.4379883" y="15">your load balancer</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrow" transform="translate(175.000000, 33.000000) scale(1, -1) rotate(-90.000000) translate(-175.000000, -33.000000) translate(163.000000, 29.000000)">
|
||||
<path d="M2,4 L24,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" transform="translate(57.000000, 33.000000) scale(1, -1) rotate(-90.000000) translate(-57.000000, -33.000000) translate(45.000000, 29.000000)">
|
||||
<path d="M2,4 L24,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>
|
||||
<path d="M0,92.9911272 C0,91.891458 0.895288359,91 1.99262649,91 L726.007374,91 C727.107871,91 728,91.8889081 728,92.9911272 L728,304.008873 C728,305.108542 727.104712,306 726.007374,306 L1.99262649,306 C0.892129269,306 0,305.111092 0,304.008873 L0,92.9911272 Z" id="group" stroke="#E0E4E7" stroke-width="2" stroke-dasharray="5,5,5,5"></path>
|
||||
<g id="user" transform="translate(420.000000, 0.000000)" fill="#82949E">
|
||||
<text id="http://wordpress.exa" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500">
|
||||
<tspan x="0.129394531" y="42">http://wordpress.example.org</tspan>
|
||||
</text>
|
||||
<path d="M73,13 C76.59125,13 79.5,10.083125 79.5,6.5 C79.5,2.90875 76.59125,0 73,0 C69.40875,0 66.5,2.90875 66.5,6.5 C66.5,10.083125 69.40875,13 73,13 L73,13 Z M73,16.25 C68.669375,16.25 60,18.419375 60,22.75 L60,26 L86,26 L86,22.75 C86,18.419375 77.330625,16.25 73,16.25 L73,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
<g id="networks" transform="translate(6.000000, 174.000000)">
|
||||
<g id="wordpress-net" transform="translate(351.000000, 0.000000)">
|
||||
<text font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="293.941406" y="75">wordpress-net</tspan>
|
||||
</text>
|
||||
<path d="M286.078683,72.7028593 L10.6033191,72.7028593" id="common" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="arrow-3" transform="translate(253.500000, 47.000000) scale(1, -1) rotate(-90.000000) translate(-253.500000, -47.000000) translate(228.500000, 41.500000)">
|
||||
<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>
|
||||
<polyline id="Path-2" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" points="49.7028656 10.4773245 4.08975869 10.4773245 4.08975869 4.67693802"></polyline>
|
||||
</g>
|
||||
<g id="arrow-2" transform="translate(129.500000, 47.000000) scale(1, -1) rotate(-90.000000) translate(-129.500000, -47.000000) translate(104.500000, 41.500000)">
|
||||
<g id="Oval">
|
||||
<use fill="#00B6B5" fill-rule="evenodd" xlink:href="#path-4"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
<polyline id="Path-2" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" points="49.7028656 10.4773245 4.08975869 10.4773245 4.08975869 4.67693802"></polyline>
|
||||
</g>
|
||||
<g id="arrow-1" transform="translate(5.500000, 36.000000) scale(1, -1) rotate(-90.000000) translate(-5.500000, -36.000000) translate(-30.500000, 30.500000)">
|
||||
<g id="Oval">
|
||||
<use fill="#FFB463" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
<polyline id="Path-2" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" points="71.7028656 10.4773245 4.08975869 10.4773245 4.08975869 4.67693802"></polyline>
|
||||
</g>
|
||||
</g>
|
||||
<g id="ucp-interlock" transform="translate(0.000000, 22.000000)">
|
||||
<text font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="0.273925781" y="53">ucp-interlock</tspan>
|
||||
</text>
|
||||
<path d="M244.353587,50.7028593 L70.3892056,50.7028593" id="common" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="arrow-2" transform="translate(248.500000, 25.000000) scale(1, -1) rotate(-90.000000) translate(-248.500000, -25.000000) translate(223.500000, 20.500000)">
|
||||
<g id="Oval">
|
||||
<use fill="#00B6B5" fill-rule="evenodd" xlink:href="#path-6"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="5" r="5"></circle>
|
||||
</g>
|
||||
<polyline id="Path-2" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" points="49.7028656 0.0354891765 4.08975869 0.0354891765 4.08975869 5.67693802"></polyline>
|
||||
</g>
|
||||
<g id="arrow-1" transform="translate(126.500000, 25.000000) scale(1, -1) rotate(-90.000000) translate(-126.500000, -25.000000) translate(101.500000, 20.500000)">
|
||||
<g id="Oval">
|
||||
<use fill="#00B6B5" fill-rule="evenodd" xlink:href="#path-7"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="5" r="5"></circle>
|
||||
</g>
|
||||
<polyline id="Path-2" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" points="49.7028656 0.0354891765 4.08975869 0.0354891765 4.08975869 5.67693802"></polyline>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 122 KiB |
After Width: | Height: | Size: 169 KiB |
|
@ -0,0 +1,207 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="310px" viewBox="0 0 740 310" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background: #FFFFFF;">
|
||||
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>interlock-deploy-production-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>
|
||||
</defs>
|
||||
<g id="interlock-deploy-production-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="all" transform="translate(9.000000, 10.000000)">
|
||||
<text id="Docker-swarm-managed" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="7" y="281">Docker swarm managed with UCP</tspan>
|
||||
</text>
|
||||
<g id="nodes" transform="translate(8.000000, 100.000000)">
|
||||
<g id="workers" transform="translate(357.000000, 0.000000)">
|
||||
<g id="node" transform="translate(242.000000, 0.000000)">
|
||||
<text id="node-6" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="37.3129883" y="149">node-6</tspan>
|
||||
</text>
|
||||
<g id="ucp" transform="translate(1.000000, 112.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="43.6953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="wordpress-copy" transform="translate(1.000000, 89.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="interlock-proxy:80" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="11.3442383" y="15">interlock-proxy:80</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="label">
|
||||
<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>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="108" height="135" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node" transform="translate(128.000000, 0.000000)">
|
||||
<text id="node-5" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="37.3129883" y="149">node-5</tspan>
|
||||
</text>
|
||||
<g id="ucp" transform="translate(1.000000, 112.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="43.6953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="wordpress" transform="translate(1.000000, 89.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="interlock-proxy:80" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="10.8442383" y="15">interlock-proxy:80</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="wordpress-copy" transform="translate(12.000000, 70.000000)" fill="#FFFFFF" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal">
|
||||
<text id="interlock-proxy:80">
|
||||
<tspan x="0.344238281" y="11">interlock-proxy:80</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="label">
|
||||
<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>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="108" height="135" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-copy-3">
|
||||
<text id="node-4" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="37.3129883" y="149">node-4</tspan>
|
||||
</text>
|
||||
<g id="ucp" transform="translate(1.000000, 112.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="43.6953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="wordpress-copy" transform="translate(1.000000, 89.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="interlock-extension" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="8.85400391" y="15">interlock-extension</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="wordpress-copy-2" transform="translate(1.000000, 66.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="wordpress:8000" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="16.0390625" y="15">wordpress:8000</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="label">
|
||||
<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>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="108" height="135" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<g id="managers">
|
||||
<g id="node" transform="translate(228.000000, 0.000000)">
|
||||
<text id="node-3" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="37.3129883" y="149">node-3</tspan>
|
||||
</text>
|
||||
<g id="ucp" transform="translate(1.000000, 112.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="43.6953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="label">
|
||||
<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>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="108" height="135" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-copy" transform="translate(114.000000, 0.000000)">
|
||||
<text id="node-2" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="37.3129883" y="149">node-2</tspan>
|
||||
</text>
|
||||
<g id="ucp" transform="translate(1.000000, 112.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="43.6953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="label">
|
||||
<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>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="108" height="135" rx="2"></rect>
|
||||
</g>
|
||||
<g id="node-copy-2">
|
||||
<text id="node-1" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="37.3129883" y="149">node-1</tspan>
|
||||
</text>
|
||||
<g id="ucp" transform="translate(1.000000, 112.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="43.6953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="wordpress" transform="translate(1.000000, 89.000000)">
|
||||
<rect id="Rectangle-138" fill="#00B6B5" x="0" y="0" width="106" height="22" rx="2"></rect>
|
||||
<text id="ucp-interlock" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="22.6435547" y="15">ucp-interlock</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="label">
|
||||
<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>
|
||||
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="108" height="135" rx="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="load-balancer" transform="translate(492.000000, 55.000000)">
|
||||
<g id="L7">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="224" 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="68.4379883" y="15">your load balancer</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrow" transform="translate(170.000000, 33.000000) scale(1, -1) rotate(-90.000000) translate(-170.000000, -33.000000) translate(158.000000, 29.000000)">
|
||||
<path d="M2,4 L24,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" transform="translate(56.000000, 33.000000) scale(1, -1) rotate(-90.000000) translate(-56.000000, -33.000000) translate(44.000000, 29.000000)">
|
||||
<path d="M2,4 L24,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>
|
||||
<path d="M0,89.0026084 C0,87.8965983 0.899745421,87 1.99463835,87 L721.005362,87 C722.10697,87 723,87.8872198 723,89.0026084 L723,288.997392 C723,290.103402 722.100255,291 721.005362,291 L1.99463835,291 C0.89303001,291 0,290.11278 0,288.997392 L0,89.0026084 Z" id="group" stroke="#E0E4E7" stroke-width="2" stroke-dasharray="5,5,5,5"></path>
|
||||
<g id="user" transform="translate(532.000000, 0.000000)" fill="#82949E">
|
||||
<text id="http://wordpress.exa" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500">
|
||||
<tspan x="0.129394531" y="42">http://wordpress.example.org</tspan>
|
||||
</text>
|
||||
<path d="M73,13 C76.59125,13 79.5,10.083125 79.5,6.5 C79.5,2.90875 76.59125,0 73,0 C69.40875,0 66.5,2.90875 66.5,6.5 C66.5,10.083125 69.40875,13 73,13 L73,13 Z M73,16.25 C68.669375,16.25 60,18.419375 60,22.75 L60,26 L86,26 L86,22.75 C86,18.419375 77.330625,16.25 73,16.25 L73,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 16 KiB |
|
@ -0,0 +1,198 @@
|
|||
<?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 42 (36781) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>use-domain-names-1</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<circle id="path-1" cx="4" cy="4" r="4"></circle>
|
||||
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||
<use xlink:href="#path-1" fill="black"></use>
|
||||
</mask>
|
||||
<circle id="path-3" cx="4" cy="4" r="4"></circle>
|
||||
<mask id="mask-4" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||
<use xlink:href="#path-3" fill="black"></use>
|
||||
</mask>
|
||||
<circle id="path-5" cx="4" cy="4" r="4"></circle>
|
||||
<mask id="mask-6" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||
<use xlink:href="#path-5" fill="black"></use>
|
||||
</mask>
|
||||
<circle id="path-7" cx="4" cy="4" r="4"></circle>
|
||||
<mask id="mask-8" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||
<use xlink:href="#path-7" fill="black"></use>
|
||||
</mask>
|
||||
<circle id="path-9" cx="4" cy="4" r="4"></circle>
|
||||
<mask id="mask-10" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||
<use xlink:href="#path-9" fill="black"></use>
|
||||
</mask>
|
||||
</defs>
|
||||
<g id="ucp-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="use-domain-names-1">
|
||||
<g id="nodes" transform="translate(108.000000, 104.000000)">
|
||||
<g id="workers" transform="translate(321.000000, 0.000000)">
|
||||
<g id="node-1" transform="translate(107.000000, 0.000000)">
|
||||
<text id="192.168.99.104" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="13.4824219" y="116">192.168.99.104</tspan>
|
||||
</text>
|
||||
<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="app" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="app-copy" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="wordpress:8000" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="10.5390625" y="15">wordpress:8000</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">
|
||||
<text id="192.168.99.103" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="13.4824219" y="116">192.168.99.103</tspan>
|
||||
</text>
|
||||
<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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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="managers">
|
||||
<g id="node-1" transform="translate(214.000000, 0.000000)">
|
||||
<text id="192.168.99.102" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="13.4824219" y="116">192.168.99.102</tspan>
|
||||
</text>
|
||||
<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="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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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)">
|
||||
<text id="192.168.99.101" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="13.4824219" y="116">192.168.99.101</tspan>
|
||||
</text>
|
||||
<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="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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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-2">
|
||||
<text id="192.168.99.100-copy-4" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="13.4824219" y="116">192.168.99.100</tspan>
|
||||
</text>
|
||||
<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="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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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>
|
||||
<g id="load-balancer" transform="translate(107.000000, 59.000000)">
|
||||
<g id="lb">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="527" height="22" rx="2"></rect>
|
||||
<text id="swarm-routing-mesh" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="214.819415" y="15">swarm routing mesh</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrow-copy-2" transform="translate(477.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-477.500000, -32.500000) translate(465.500000, 28.500000)">
|
||||
<path d="M2,4 L24,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>
|
||||
<use stroke="#F7F8F9" mask="url(#mask-2)" stroke-width="4" xlink:href="#path-1"></use>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-3" transform="translate(370.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-370.500000, -32.500000) translate(358.500000, 28.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-3"></use>
|
||||
<use stroke="#F7F8F9" mask="url(#mask-4)" stroke-width="4" xlink:href="#path-3"></use>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-4" transform="translate(263.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-263.500000, -32.500000) translate(251.500000, 28.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<use stroke="#F7F8F9" mask="url(#mask-6)" stroke-width="4" xlink:href="#path-5"></use>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-5" transform="translate(156.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-156.500000, -32.500000) translate(144.500000, 28.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-7"></use>
|
||||
<use stroke="#F7F8F9" mask="url(#mask-8)" stroke-width="4" xlink:href="#path-7"></use>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-6" transform="translate(49.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-49.500000, -32.500000) translate(37.500000, 28.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-9"></use>
|
||||
<use stroke="#F7F8F9" mask="url(#mask-10)" stroke-width="4" xlink:href="#path-9"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="user" transform="translate(321.000000, 4.000000)" fill="#82949E">
|
||||
<text id="192.168.99.100:8000" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500">
|
||||
<tspan x="0.191894531" y="42">192.168.99.100:8000</tspan>
|
||||
</text>
|
||||
<path d="M49,13 C52.59125,13 55.5,10.083125 55.5,6.5 C55.5,2.90875 52.59125,0 49,0 C45.40875,0 42.5,2.90875 42.5,6.5 C42.5,10.083125 45.40875,13 49,13 L49,13 Z M49,16.25 C44.669375,16.25 36,18.419375 36,22.75 L36,26 L62,26 L62,22.75 C62,18.419375 53.330625,16.25 49,16.25 L49,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,198 @@
|
|||
<?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 42 (36781) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>use-domain-names-2</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<circle id="path-1" cx="4" cy="4" r="4"></circle>
|
||||
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||
<use xlink:href="#path-1" fill="black"></use>
|
||||
</mask>
|
||||
<circle id="path-3" cx="4" cy="4" r="4"></circle>
|
||||
<mask id="mask-4" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||
<use xlink:href="#path-3" fill="black"></use>
|
||||
</mask>
|
||||
<circle id="path-5" cx="4" cy="4" r="4"></circle>
|
||||
<mask id="mask-6" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||
<use xlink:href="#path-5" fill="black"></use>
|
||||
</mask>
|
||||
<circle id="path-7" cx="4" cy="4" r="4"></circle>
|
||||
<mask id="mask-8" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||
<use xlink:href="#path-7" fill="black"></use>
|
||||
</mask>
|
||||
<circle id="path-9" cx="4" cy="4" r="4"></circle>
|
||||
<mask id="mask-10" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||
<use xlink:href="#path-9" fill="black"></use>
|
||||
</mask>
|
||||
</defs>
|
||||
<g id="ucp-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="use-domain-names-2">
|
||||
<g id="nodes" transform="translate(108.000000, 104.000000)">
|
||||
<g id="workers" transform="translate(321.000000, 0.000000)">
|
||||
<g id="node-1" transform="translate(107.000000, 0.000000)">
|
||||
<text id="192.168.99.104" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="13.4824219" y="116">192.168.99.104</tspan>
|
||||
</text>
|
||||
<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="app" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="app-copy" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="wordpress:8000" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="10.5390625" y="15">wordpress:8000</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">
|
||||
<text id="192.168.99.103" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="13.4824219" y="116">192.168.99.103</tspan>
|
||||
</text>
|
||||
<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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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="managers">
|
||||
<g id="node-1" transform="translate(214.000000, 0.000000)">
|
||||
<text id="192.168.99.102" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="13.4824219" y="116">192.168.99.102</tspan>
|
||||
</text>
|
||||
<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="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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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)">
|
||||
<text id="192.168.99.101" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="13.4824219" y="116">192.168.99.101</tspan>
|
||||
</text>
|
||||
<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="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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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-2">
|
||||
<text id="192.168.99.100-copy-4" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="13.4824219" y="116">192.168.99.100</tspan>
|
||||
</text>
|
||||
<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="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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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>
|
||||
<g id="load-balancer" transform="translate(107.000000, 59.000000)">
|
||||
<g id="lb">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="527" height="22" rx="2"></rect>
|
||||
<text id="HTTP-routing-mesh" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="218.33504" y="15">HTTP routing mesh</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrow-copy-2" transform="translate(477.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-477.500000, -32.500000) translate(465.500000, 28.500000)">
|
||||
<path d="M2,4 L24,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>
|
||||
<use stroke="#F7F8F9" mask="url(#mask-2)" stroke-width="4" xlink:href="#path-1"></use>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-3" transform="translate(370.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-370.500000, -32.500000) translate(358.500000, 28.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-3"></use>
|
||||
<use stroke="#F7F8F9" mask="url(#mask-4)" stroke-width="4" xlink:href="#path-3"></use>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-4" transform="translate(263.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-263.500000, -32.500000) translate(251.500000, 28.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<use stroke="#F7F8F9" mask="url(#mask-6)" stroke-width="4" xlink:href="#path-5"></use>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-5" transform="translate(156.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-156.500000, -32.500000) translate(144.500000, 28.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-7"></use>
|
||||
<use stroke="#F7F8F9" mask="url(#mask-8)" stroke-width="4" xlink:href="#path-7"></use>
|
||||
</g>
|
||||
</g>
|
||||
<g id="arrow-copy-6" transform="translate(49.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-49.500000, -32.500000) translate(37.500000, 28.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-9"></use>
|
||||
<use stroke="#F7F8F9" mask="url(#mask-10)" stroke-width="4" xlink:href="#path-9"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="user" transform="translate(306.000000, 4.000000)" fill="#82949E">
|
||||
<text id="wordpress.example.or" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500">
|
||||
<tspan x="0.0424804688" y="42">wordpress.example.org:80</tspan>
|
||||
</text>
|
||||
<path d="M64,13 C67.59125,13 70.5,10.083125 70.5,6.5 C70.5,2.90875 67.59125,0 64,0 C60.40875,0 57.5,2.90875 57.5,6.5 C57.5,10.083125 60.40875,13 64,13 L64,13 Z M64,16.25 C59.669375,16.25 51,18.419375 51,22.75 L51,26 L77,26 L77,22.75 C77,18.419375 68.330625,16.25 64,16.25 L64,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 25 KiB |
|
@ -0,0 +1,180 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="270px" viewBox="0 0 740 270" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background: #FFFFFF;">
|
||||
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>interlock-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="interlock-overview-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<text id="Docker-swarm-managed" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="91" y="258">Docker swarm managed with UCP</tspan>
|
||||
</text>
|
||||
<g id="nodes" transform="translate(108.000000, 117.000000)">
|
||||
<g id="workers" transform="translate(321.000000, 0.000000)">
|
||||
<g id="node-1" transform="translate(107.000000, 0.000000)">
|
||||
<text id="node-5" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="32.3129883" y="116">node-5</tspan>
|
||||
</text>
|
||||
<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="app" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="app-copy" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="wordpress:8000" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="10.5390625" y="15">wordpress:8000</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">
|
||||
<text id="node-4" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="32.3129883" y="116">node-4</tspan>
|
||||
</text>
|
||||
<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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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="managers">
|
||||
<g id="node-1" transform="translate(214.000000, 0.000000)">
|
||||
<text id="node-3" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="32.3129883" y="116">node-3</tspan>
|
||||
</text>
|
||||
<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="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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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)">
|
||||
<text id="node-2" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="32.3129883" y="116">node-2</tspan>
|
||||
</text>
|
||||
<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="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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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-2">
|
||||
<text id="node-1" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="32.3129883" y="116">node-1</tspan>
|
||||
</text>
|
||||
<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="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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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>
|
||||
<g id="load-balancer" transform="translate(107.000000, 72.000000)">
|
||||
<g id="lb">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="527" height="22" rx="2"></rect>
|
||||
<text id="swarm-routing-mesh" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="214.819415" y="15">swarm routing mesh</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrow-copy-2" transform="translate(477.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-477.500000, -32.500000) translate(465.500000, 28.500000)">
|
||||
<path d="M2,4 L24,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(370.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-370.500000, -32.500000) translate(358.500000, 28.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" 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(263.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-263.500000, -32.500000) translate(251.500000, 28.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" 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="arrow-copy-5" transform="translate(156.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-156.500000, -32.500000) translate(144.500000, 28.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" 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-6" transform="translate(49.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-49.500000, -32.500000) translate(37.500000, 28.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<path d="M86,64.0091623 C86,62.8995326 86.9024627,62 88.0006502,62 L651.99935,62 C653.104278,62 654,62.9050608 654,64.0091623 L654,262.990838 C654,264.100467 653.097537,265 651.99935,265 L88.0006502,265 C86.8957216,265 86,264.094939 86,262.990838 L86,64.0091623 Z" id="group" stroke="#E0E4E7" stroke-width="2" stroke-dasharray="5,5,5,5"></path>
|
||||
<g id="user" transform="translate(324.000000, 7.000000)" fill="#82949E">
|
||||
<text id="http://node-5:8000" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500">
|
||||
<tspan x="0.526855469" y="42">http://node-5:8000</tspan>
|
||||
</text>
|
||||
<path d="M46,13 C49.59125,13 52.5,10.083125 52.5,6.5 C52.5,2.90875 49.59125,0 46,0 C42.40875,0 39.5,2.90875 39.5,6.5 C39.5,10.083125 42.40875,13 46,13 L46,13 Z M46,16.25 C41.669375,16.25 33,18.419375 33,22.75 L33,26 L59,26 L59,22.75 C59,18.419375 50.330625,16.25 46,16.25 L46,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
|
@ -0,0 +1,186 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="740px" height="300px" viewBox="0 0 740 300" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background: #FFFFFF;">
|
||||
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>interlock-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="interlock-overview-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<text id="Docker-swarm-managed" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#E0E4E7">
|
||||
<tspan x="91" y="287">Docker swarm managed with UCP</tspan>
|
||||
</text>
|
||||
<g id="nodes" transform="translate(108.000000, 146.000000)">
|
||||
<g id="workers" transform="translate(321.000000, 0.000000)">
|
||||
<g id="node-1" transform="translate(107.000000, 0.000000)">
|
||||
<text id="node-5" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="32.3129883" y="116">node-5</tspan>
|
||||
</text>
|
||||
<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="app" transform="translate(1.000000, 79.000000)">
|
||||
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP </tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="app-copy" transform="translate(1.000000, 56.000000)">
|
||||
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||
<text id="wordpress:8000" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="10.5390625" y="15">wordpress:8000</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">
|
||||
<text id="node-4" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="32.3129883" y="116">node-4</tspan>
|
||||
</text>
|
||||
<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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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="managers">
|
||||
<g id="node-1" transform="translate(214.000000, 0.000000)">
|
||||
<text id="node-3" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="32.3129883" y="116">node-3</tspan>
|
||||
</text>
|
||||
<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="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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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)">
|
||||
<text id="node-2" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="32.3129883" y="116">node-2</tspan>
|
||||
</text>
|
||||
<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="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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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-2">
|
||||
<text id="node-1" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||
<tspan x="32.3129883" y="116">node-1</tspan>
|
||||
</text>
|
||||
<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="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="app" 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="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="38.1953125" y="15">UCP</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>
|
||||
<g id="load-balancer" transform="translate(107.000000, 75.000000)">
|
||||
<g id="L4" transform="translate(0.000000, 26.000000)">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="527" height="22" rx="2"></rect>
|
||||
<text id="swarm-routing-mesh" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="214.819415" y="15">swarm routing mesh</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="L7">
|
||||
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="527" height="22" rx="2"></rect>
|
||||
<text id="layer-7-routing" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||
<tspan x="229.206622" y="15">layer 7 routing</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="arrow-copy-2" transform="translate(477.500000, 58.500000) scale(1, -1) rotate(-90.000000) translate(-477.500000, -58.500000) translate(465.500000, 54.500000)">
|
||||
<path d="M2,4 L24,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(370.500000, 58.500000) scale(1, -1) rotate(-90.000000) translate(-370.500000, -58.500000) translate(358.500000, 54.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" 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(263.500000, 58.500000) scale(1, -1) rotate(-90.000000) translate(-263.500000, -58.500000) translate(251.500000, 54.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" 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="arrow-copy-5" transform="translate(156.500000, 58.500000) scale(1, -1) rotate(-90.000000) translate(-156.500000, -58.500000) translate(144.500000, 54.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" 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-6" transform="translate(49.500000, 58.500000) scale(1, -1) rotate(-90.000000) translate(-49.500000, -58.500000) translate(37.500000, 54.500000)">
|
||||
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<g id="Oval">
|
||||
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||
<circle stroke="#F7F8F9" stroke-width="2" cx="4" cy="4" r="5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<path d="M86,64.9970083 C86,63.8940911 86.9024627,63 88.0006502,63 L651.99935,63 C653.104278,63 654,63.8947956 654,64.9970083 L654,292.002992 C654,293.105909 653.097537,294 651.99935,294 L88.0006502,294 C86.8957216,294 86,293.105204 86,292.002992 L86,64.9970083 Z" id="group" stroke="#E0E4E7" stroke-width="2" stroke-dasharray="5,5,5,5"></path>
|
||||
<g id="user" transform="translate(297.000000, 6.000000)" fill="#82949E">
|
||||
<text id="http://wordpress.exa" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500">
|
||||
<tspan x="0.129394531" y="42">http://wordpress.example.org</tspan>
|
||||
</text>
|
||||
<path d="M73,13 C76.59125,13 79.5,10.083125 79.5,6.5 C79.5,2.90875 76.59125,0 73,0 C69.40875,0 66.5,2.90875 66.5,6.5 C66.5,10.083125 69.40875,13 73,13 L73,13 Z M73,16.25 C68.669375,16.25 60,18.419375 60,22.75 L60,26 L86,26 L86,22.75 C86,18.419375 77.330625,16.25 73,16.25 L73,16.25 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 188 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 117 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 109 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 162 KiB |
After Width: | Height: | Size: 140 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 89 KiB |