Signed-off-by: Mary Anthony <mary@docker.com>
Upding sed, adding script to avoid redirects, remove mkdos
Signed-off-by: Mary Anthony <mary@docker.com>
Ignoring graphics with sed
Signed-off-by: Mary Anthony <mary@docker.com>
Fixing kitematic image
Signed-off-by: Mary Anthony <mary@docker.com>
Removing draft
Signed-off-by: Mary Anthony <mary@docker.com>
Fixing link
Signed-off-by: Mary Anthony <mary@docker.com>
removing from the menu
Signed-off-by: Mary Anthony <mary@docker.com>
Updatiing order of project material
Signed-off-by: Mary Anthony <mary@docker.com>
Removing from Regsitry v2 content per Olivier
Signed-off-by: Mary Anthony <mary@docker.com>
tweaking the touchup
Signed-off-by: Mary Anthony <mary@docker.com>
Removing include; only used four places; hugo global var replace
Signed-off-by: Mary Anthony <mary@docker.com>
Entering fixes from page-by-page
Signed-off-by: Mary Anthony <mary@docker.com>
| ... | ... |
@@ -4,21 +4,10 @@ MAINTAINER Mary Anthony <mary@docker.com> (@moxiegirl) |
| 4 | 4 |
# To get the git info for this repo |
| 5 | 5 |
COPY . /src |
| 6 | 6 |
|
| 7 |
-COPY . /docs/content/engine/ |
|
| 7 |
+COPY . /docs/content/ |
|
| 8 | 8 |
|
| 9 |
-# Sed to process GitHub Markdown |
|
| 10 |
-# 1-2 Remove comment code from metadata block |
|
| 11 |
-# 3 Remove .md extension from link text |
|
| 12 |
-# 4 Change ](/ to ](/project/ in links |
|
| 13 |
-# 5 Change ](word) to ](/project/word) |
|
| 14 |
-# 6 Change ](../../ to ](/project/ |
|
| 15 |
-# 7 Change ](../ to ](/project/word) |
|
| 16 |
-# |
|
| 17 |
-# |
|
| 18 |
-RUN find /docs/content/engine -type f -name "*.md" -exec sed -i.old \ |
|
| 19 |
- -e '/^<!.*metadata]>/g' \ |
|
| 20 |
- -e '/^<!.*end-metadata.*>/g' \ |
|
| 21 |
- -e 's/\([(]\)\(.*\)\(\.md\)/\1\2/g' \ |
|
| 22 |
- -e 's/\(\]\)\([(]\)\(\/\)/\1\2\/engine\//g' \ |
|
| 23 |
- -e 's/\(\][(]\)\([A-z]*[)]\)/\]\(\/engine\/\2/g' \ |
|
| 24 |
- -e 's/\(\][(]\)\(\.\.\/\)/\1\/engine\//g' {} \;
|
|
| 9 |
+WORKDIR /docs/content |
|
| 10 |
+ |
|
| 11 |
+RUN /docs/content/touch-up.sh |
|
| 12 |
+ |
|
| 13 |
+WORKDIR /docs |
| ... | ... |
@@ -47,7 +47,9 @@ image cache. |
| 47 | 47 |
> characters of the full image ID - which can be found using |
| 48 | 48 |
> `docker inspect` or `docker images --no-trunc=true`. |
| 49 | 49 |
|
| 50 |
-{{ include "no-remote-sudo.md" }}
|
|
| 50 |
+> **Note:** if you are using a remote Docker daemon, such as Boot2Docker, |
|
| 51 |
+> then _do not_ type the `sudo` before the `docker` commands shown in the |
|
| 52 |
+> documentation's examples. |
|
| 51 | 53 |
|
| 52 | 54 |
## Running an interactive shell |
| 53 | 55 |
|
| ... | ... |
@@ -4,7 +4,8 @@ title = "Using certificates for repository client verification" |
| 4 | 4 |
description = "How to set up and use certificates with a registry to verify access" |
| 5 | 5 |
keywords = ["Usage, registry, repository, client, root, certificate, docker, apache, ssl, tls, documentation, examples, articles, tutorials"] |
| 6 | 6 |
[menu.main] |
| 7 |
-parent = "smn_registry" |
|
| 7 |
+parent = "mn_docker_hub" |
|
| 8 |
+weight = 7 |
|
| 8 | 9 |
+++ |
| 9 | 10 |
<![end-metadata]--> |
| 10 | 11 |
|
| ... | ... |
@@ -4,7 +4,8 @@ title = "Run a local registry mirror" |
| 4 | 4 |
description = "How to set up and run a local registry mirror" |
| 5 | 5 |
keywords = ["docker, registry, mirror, examples"] |
| 6 | 6 |
[menu.main] |
| 7 |
-parent = "smn_registry" |
|
| 7 |
+parent = "mn_docker_hub" |
|
| 8 |
+weight = 8 |
|
| 8 | 9 |
+++ |
| 9 | 10 |
<![end-metadata]--> |
| 10 | 11 |
|
| ... | ... |
@@ -5,6 +5,7 @@ description = "Docker Hub Automated Builds" |
| 5 | 5 |
keywords = ["Docker, docker, registry, accounts, plans, Dockerfile, Docker Hub, docs, documentation, trusted, builds, trusted builds, automated builds"] |
| 6 | 6 |
[menu.main] |
| 7 | 7 |
parent = "smn_pubhub" |
| 8 |
+weight = 3 |
|
| 8 | 9 |
+++ |
| 9 | 10 |
<![end-metadata]--> |
| 10 | 11 |
|
| ... | ... |
@@ -1,6 +1,6 @@ |
| 1 | 1 |
<!--[metadata]> |
| 2 | 2 |
+++ |
| 3 |
-title = "The Docker Hub help" |
|
| 3 |
+title = "The Docker Hub" |
|
| 4 | 4 |
description = "The Docker Help documentation home" |
| 5 | 5 |
keywords = ["Docker, docker, registry, accounts, plans, Dockerfile, Docker Hub, docs, documentation, accounts, organizations, repositories, groups"] |
| 6 | 6 |
[menu.main] |
| ... | ... |
@@ -5,6 +5,7 @@ description = "Guidelines for Official Repositories on Docker Hub" |
| 5 | 5 |
keywords = ["Docker, docker, registry, accounts, plans, Dockerfile, Docker Hub, docs, official, image, documentation"] |
| 6 | 6 |
[menu.main] |
| 7 | 7 |
parent = "smn_pubhub" |
| 8 |
+weight = 4 |
|
| 8 | 9 |
+++ |
| 9 | 10 |
<![end-metadata]--> |
| 10 | 11 |
|
| ... | ... |
@@ -4,7 +4,7 @@ title = "Dockerizing a CouchDB service" |
| 4 | 4 |
description = "Sharing data between 2 couchdb databases" |
| 5 | 5 |
keywords = ["docker, example, package installation, networking, couchdb, data volumes"] |
| 6 | 6 |
[menu.main] |
| 7 |
-parent = "smn_remoteapi" |
|
| 7 |
+parent = "smn_applied" |
|
| 8 | 8 |
+++ |
| 9 | 9 |
<![end-metadata]--> |
| 10 | 10 |
|
| ... | ... |
@@ -14,7 +14,7 @@ You can install Docker using Boot2Docker to run `docker` commands at your comman |
| 14 | 14 |
Choose this installation if you are familiar with the command-line or plan to |
| 15 | 15 |
contribute to the Docker project on GitHub. |
| 16 | 16 |
|
| 17 |
-[<img src="/engine/installation/images/kitematic.png" alt="Download Kitematic" |
|
| 17 |
+[<img src="/installation/images/kitematic.png" alt="Download Kitematic" |
|
| 18 | 18 |
style="float:right;">](https://kitematic.com/download) |
| 19 | 19 |
|
| 20 | 20 |
Alternatively, you may want to try <a id="inlinelink" href="https://kitematic.com/" |
| ... | ... |
@@ -355,4 +355,4 @@ at [Boot2Docker repository](https://github.com/boot2docker/boot2docker). |
| 355 | 355 |
Thanks to Chris Jones whose [blog](http://viget.com/extend/how-to-use-docker-on-os-x-the-missing-guide) |
| 356 | 356 |
inspired me to redo this page. |
| 357 | 357 |
|
| 358 |
-Continue with the [Docker User Guide](/userguide/). |
|
| 358 |
+Continue with the [Docker User Guide](/userguide). |
| ... | ... |
@@ -53,7 +53,9 @@ is developed, you can launch only Linux containers from your Windows machine. |
| 53 | 53 |
|
| 54 | 54 |
## Running Docker |
| 55 | 55 |
|
| 56 |
-{{ include "no-remote-sudo.md" }}
|
|
| 56 |
+> **Note:** if you are using a remote Docker daemon, such as Boot2Docker, |
|
| 57 |
+> then _do not_ type the `sudo` before the `docker` commands shown in the |
|
| 58 |
+> documentation's examples. |
|
| 57 | 59 |
|
| 58 | 60 |
**Boot2Docker Start** will automatically start a shell with environment variables |
| 59 | 61 |
correctly set so you can start using Docker right away: |
| ... | ... |
@@ -36,7 +36,9 @@ Windows*](../installation/windows/#windows) installation guides. The small Linux |
| 36 | 36 |
distribution boot2docker can be run inside virtual machines on these two |
| 37 | 37 |
operating systems. |
| 38 | 38 |
|
| 39 |
-{{ include "no-remote-sudo.md" }}
|
|
| 39 |
+> **Note:** if you are using a remote Docker daemon, such as Boot2Docker, |
|
| 40 |
+> then _do not_ type the `sudo` before the `docker` commands shown in the |
|
| 41 |
+> documentation's examples. |
|
| 40 | 42 |
|
| 41 | 43 |
### How do containers compare to virtual machines? |
| 42 | 44 |
|
| ... | ... |
@@ -1,12 +1,10 @@ |
| 1 | 1 |
<!--[metadata]> |
| 2 | 2 |
+++ |
| 3 |
-draft = true |
|
| 4 |
-title = "Get started with Docker" |
|
| 3 |
+title = "About Docker" |
|
| 5 | 4 |
description = "Introduction to Docker." |
| 6 | 5 |
keywords = ["docker, introduction, documentation, about, technology, understanding, Dockerfile"] |
| 7 | 6 |
[menu.main] |
| 8 | 7 |
parent = "mn_use_docker" |
| 9 |
-weight = 1 |
|
| 10 | 8 |
+++ |
| 11 | 9 |
<![end-metadata]--> |
| 12 | 10 |
|
| 13 | 11 |
deleted file mode 100644 |
| ... | ... |
@@ -1,230 +0,0 @@ |
| 1 |
-site_name: Docker Documentation |
|
| 2 |
-#site_url: https://docs.docker.com/ |
|
| 3 |
-site_url: / |
|
| 4 |
-site_description: Documentation for fast and lightweight Docker container based virtualization framework. |
|
| 5 |
-site_favicon: img/favicon.png |
|
| 6 |
- |
|
| 7 |
-dev_addr: '0.0.0.0:8000' |
|
| 8 |
- |
|
| 9 |
-repo_url: https://github.com/docker/docker/ |
|
| 10 |
- |
|
| 11 |
-docs_dir: sources |
|
| 12 |
- |
|
| 13 |
-include_search: true |
|
| 14 |
- |
|
| 15 |
-use_absolute_urls: true |
|
| 16 |
- |
|
| 17 |
-# theme: docker |
|
| 18 |
-theme_dir: ./theme/mkdocs/ |
|
| 19 |
-theme_center_lead: false |
|
| 20 |
- |
|
| 21 |
-copyright: Copyright © 2014-2015, Docker, Inc. |
|
| 22 |
-google_analytics: ['UA-6096819-11', 'docker.io'] |
|
| 23 |
- |
|
| 24 |
-pages: |
|
| 25 |
- |
|
| 26 |
-# Introduction: |
|
| 27 |
-- ['index.md', 'About', 'Docker'] |
|
| 28 |
-- ['introduction/understanding-docker.md', 'About', 'Understanding Docker'] |
|
| 29 |
-- ['release-notes.md', 'About', 'Release notes'] |
|
| 30 |
-- ['reference/glossary.md', 'About', 'Glossary'] |
|
| 31 |
-- ['introduction/index.md', '**HIDDEN**'] |
|
| 32 |
- |
|
| 33 |
- |
|
| 34 |
-# Installation: |
|
| 35 |
-- ['installation/index.md', '**HIDDEN**'] |
|
| 36 |
-- ['installation/ubuntulinux.md', 'Installation', 'Ubuntu'] |
|
| 37 |
-- ['installation/mac.md', 'Installation', 'Mac OS X'] |
|
| 38 |
-- ['kitematic/index.md', 'Installation', 'Kitematic on OS X'] |
|
| 39 |
-- ['installation/windows.md', 'Installation', 'Microsoft Windows'] |
|
| 40 |
-- ['installation/testing-windows-docker-client.md', 'Installation', 'Building and testing the Windows Docker client'] |
|
| 41 |
-- ['installation/amazon.md', 'Installation', 'Amazon EC2'] |
|
| 42 |
-- ['installation/archlinux.md', 'Installation', 'Arch Linux'] |
|
| 43 |
-- ['installation/binaries.md', 'Installation', 'Binaries'] |
|
| 44 |
-- ['installation/centos.md', 'Installation', 'CentOS'] |
|
| 45 |
-- ['installation/cruxlinux.md', 'Installation', 'CRUX Linux'] |
|
| 46 |
-- ['installation/debian.md', 'Installation', 'Debian'] |
|
| 47 |
-- ['installation/fedora.md', 'Installation', 'Fedora'] |
|
| 48 |
-- ['installation/frugalware.md', 'Installation', 'FrugalWare'] |
|
| 49 |
-- ['installation/google.md', 'Installation', 'Google Cloud Platform'] |
|
| 50 |
-- ['installation/gentoolinux.md', 'Installation', 'Gentoo'] |
|
| 51 |
-- ['installation/softlayer.md', 'Installation', 'IBM Softlayer'] |
|
| 52 |
-- ['installation/joyent.md', 'Installation', 'Joyent Compute Service'] |
|
| 53 |
-- ['installation/azure.md', 'Installation', 'Microsoft Azure'] |
|
| 54 |
-- ['installation/rackspace.md', 'Installation', 'Rackspace Cloud'] |
|
| 55 |
-- ['installation/rhel.md', 'Installation', 'Red Hat Enterprise Linux'] |
|
| 56 |
-- ['installation/oracle.md', 'Installation', 'Oracle Linux'] |
|
| 57 |
-- ['installation/SUSE.md', 'Installation', 'SUSE'] |
|
| 58 |
-- ['compose/install.md', 'Installation', 'Docker Compose'] |
|
| 59 |
- |
|
| 60 |
-# User Guide: |
|
| 61 |
-- ['userguide/index.md', 'User Guide', 'The Docker user guide' ] |
|
| 62 |
-- ['userguide/dockerhub.md', 'User Guide', 'Getting started with Docker Hub' ] |
|
| 63 |
-- ['userguide/dockerizing.md', 'User Guide', 'Dockerizing applications' ] |
|
| 64 |
-- ['userguide/usingdocker.md', 'User Guide', 'Working with containers' ] |
|
| 65 |
-- ['userguide/dockerimages.md', 'User Guide', 'Working with Docker images' ] |
|
| 66 |
-- ['userguide/dockerlinks.md', 'User Guide', 'Linking containers together' ] |
|
| 67 |
-- ['userguide/dockervolumes.md', 'User Guide', 'Managing data in containers' ] |
|
| 68 |
-- ['userguide/labels-custom-metadata.md', 'User Guide', 'Apply custom metadata' ] |
|
| 69 |
-- ['userguide/dockerrepos.md', 'User Guide', 'Working with Docker Hub' ] |
|
| 70 |
-- ['userguide/level1.md', '**HIDDEN**' ] |
|
| 71 |
-- ['userguide/level2.md', '**HIDDEN**' ] |
|
| 72 |
-- ['compose/index.md', 'User Guide', 'Docker Compose' ] |
|
| 73 |
-- ['compose/production.md', 'User Guide', ' ▪ Use Compose in production' ] |
|
| 74 |
-- ['compose/extends.md', 'User Guide', ' ▪ Extend Compose services' ] |
|
| 75 |
-- ['machine/index.md', 'User Guide', 'Docker Machine' ] |
|
| 76 |
-- ['swarm/index.md', 'User Guide', 'Docker Swarm' ] |
|
| 77 |
-- ['kitematic/userguide.md', 'User Guide', 'Kitematic'] |
|
| 78 |
- |
|
| 79 |
-# Docker Hub docs: |
|
| 80 |
-- ['docker-hub/index.md', 'Docker Hub', 'Docker Hub' ] |
|
| 81 |
-- ['docker-hub/accounts.md', 'Docker Hub', 'Accounts'] |
|
| 82 |
-- ['docker-hub/userguide.md', 'Docker Hub', 'User Guide'] |
|
| 83 |
-- ['docker-hub/repos.md', 'Docker Hub', 'Your Repositories'] |
|
| 84 |
-- ['docker-hub/builds.md', 'Docker Hub', 'Automated Builds'] |
|
| 85 |
-- ['docker-hub/official_repos.md', 'Docker Hub', 'Official Repositories'] |
|
| 86 |
- |
|
| 87 |
-# Docker Hub Enterprise: |
|
| 88 |
-- ['docker-hub-enterprise/index.md', 'Docker Hub Enterprise', 'Overview' ] |
|
| 89 |
-- ['docker-hub-enterprise/quick-start.md', 'Docker Hub Enterprise', 'Quick Start: Basic Workflow' ] |
|
| 90 |
-- ['docker-hub-enterprise/userguide.md', 'Docker Hub Enterprise', 'User Guide' ] |
|
| 91 |
-- ['docker-hub-enterprise/adminguide.md', 'Docker Hub Enterprise', 'Admin Guide' ] |
|
| 92 |
-- ['docker-hub-enterprise/install.md', 'Docker Hub Enterprise', ' Installation' ] |
|
| 93 |
-- ['docker-hub-enterprise/configuration.md', 'Docker Hub Enterprise', ' Configuration options' ] |
|
| 94 |
-- ['docker-hub-enterprise/support.md', 'Docker Hub Enterprise', 'Support' ] |
|
| 95 |
-- ['docker-hub-enterprise/release-notes.md', 'Docker Hub Enterprise', 'Release notes' ] |
|
| 96 |
- |
|
| 97 |
-# Examples: |
|
| 98 |
-- ['examples/index.md', '**HIDDEN**'] |
|
| 99 |
-- ['examples/nodejs_web_app.md', 'Examples', 'Dockerizing a Node.js web application'] |
|
| 100 |
-- ['examples/mongodb.md', 'Examples', 'Dockerizing MongoDB'] |
|
| 101 |
-- ['examples/running_redis_service.md', 'Examples', 'Dockerizing a Redis service'] |
|
| 102 |
-- ['examples/postgresql_service.md', 'Examples', 'Dockerizing a PostgreSQL service'] |
|
| 103 |
-- ['examples/running_riak_service.md', 'Examples', 'Dockerizing a Riak service'] |
|
| 104 |
-- ['examples/running_ssh_service.md', 'Examples', 'Dockerizing an SSH service'] |
|
| 105 |
-- ['examples/couchdb_data_volumes.md', 'Examples', 'Dockerizing a CouchDB service'] |
|
| 106 |
-- ['examples/apt-cacher-ng.md', 'Examples', 'Dockerizing an Apt-Cacher-ng service'] |
|
| 107 |
-- ['compose/django.md', 'Examples', 'Getting started with Compose and Django'] |
|
| 108 |
-- ['compose/rails.md', 'Examples', 'Getting started with Compose and Rails'] |
|
| 109 |
-- ['compose/wordpress.md', 'Examples', 'Getting started with Compose and Wordpress'] |
|
| 110 |
-- ['kitematic/minecraft-server.md', 'Examples', 'Kitematic: Minecraft server'] |
|
| 111 |
-- ['kitematic/nginx-web-server.md', 'Examples', 'Kitematic: Ngnix web server'] |
|
| 112 |
-- ['kitematic/rethinkdb-dev-database.md', 'Examples', 'Kitematic: RethinkDB development database'] |
|
| 113 |
- |
|
| 114 |
-# Articles |
|
| 115 |
-- ['articles/index.md', '**HIDDEN**'] |
|
| 116 |
-- ['articles/basics.md', 'Articles', 'Docker basics'] |
|
| 117 |
-- ['articles/networking.md', 'Articles', 'Advanced networking'] |
|
| 118 |
-- ['articles/security.md', 'Articles', 'Security'] |
|
| 119 |
-- ['articles/https.md', 'Articles', 'Running Docker with HTTPS'] |
|
| 120 |
-- ['articles/registry_mirror.md', 'Articles', 'Run a local registry mirror'] |
|
| 121 |
-- ['articles/host_integration.md', 'Articles', 'Automatically starting containers'] |
|
| 122 |
-- ['articles/baseimages.md', 'Articles', 'Creating a base image'] |
|
| 123 |
-- ['articles/dockerfile_best-practices.md', 'Articles', 'Best practices for writing Dockerfiles'] |
|
| 124 |
-- ['articles/certificates.md', 'Articles', 'Using certificates for repository client verification'] |
|
| 125 |
-- ['articles/using_supervisord.md', 'Articles', 'Using Supervisor'] |
|
| 126 |
-- ['articles/configuring.md', 'Articles', 'Configuring Docker'] |
|
| 127 |
-- ['articles/cfengine_process_management.md', 'Articles', 'Process management with CFEngine'] |
|
| 128 |
-- ['articles/puppet.md', 'Articles', 'Using Puppet'] |
|
| 129 |
-- ['articles/chef.md', 'Articles', 'Using Chef'] |
|
| 130 |
-- ['articles/dsc.md', 'Articles', 'Using PowerShell DSC'] |
|
| 131 |
-- ['articles/ambassador_pattern_linking.md', 'Articles', 'Cross-Host linking using ambassador containers'] |
|
| 132 |
-- ['articles/runmetrics.md', 'Articles', 'Runtime metrics'] |
|
| 133 |
-- ['articles/b2d_volume_resize.md', 'Articles', 'Increasing a Boot2Docker volume'] |
|
| 134 |
-- ['articles/systemd.md', 'Articles', 'Controlling and configuring Docker using Systemd'] |
|
| 135 |
- |
|
| 136 |
-# Reference |
|
| 137 |
-- ['reference/index.md', '**HIDDEN**'] |
|
| 138 |
-- ['reference/commandline/index.md', '**HIDDEN**'] |
|
| 139 |
-- ['reference/commandline/cli.md', 'Reference', 'Docker command line'] |
|
| 140 |
-- ['reference/builder.md', 'Reference', 'Dockerfile'] |
|
| 141 |
-- ['faq.md', 'Reference', 'FAQ'] |
|
| 142 |
-- ['reference/run.md', 'Reference', 'Run reference'] |
|
| 143 |
-- ['reference/logging/journald.md', '**HIDDEN**'] |
|
| 144 |
-- ['compose/cli.md', 'Reference', 'Compose command line'] |
|
| 145 |
-- ['compose/yml.md', 'Reference', 'Compose yml'] |
|
| 146 |
-- ['compose/env.md', 'Reference', 'Compose ENV variables'] |
|
| 147 |
-- ['compose/completion.md', 'Reference', 'Compose commandline completion'] |
|
| 148 |
-- ['swarm/discovery.md', 'Reference', 'Swarm discovery'] |
|
| 149 |
-- ['swarm/scheduler/strategy.md', 'Reference', 'Swarm strategies'] |
|
| 150 |
-- ['swarm/scheduler/filter.md', 'Reference', 'Swarm filters'] |
|
| 151 |
-- ['swarm/API.md', 'Reference', 'Swarm API'] |
|
| 152 |
-- ['reference/api/index.md', '**HIDDEN**'] |
|
| 153 |
-- ['registry/index.md', 'Reference', 'Docker Registry 2.0'] |
|
| 154 |
-- ['registry/deploying.md', 'Reference', ' ▪ Deploy a registry' ] |
|
| 155 |
-- ['registry/configuration.md', 'Reference', ' ▪ Configure a registry' ] |
|
| 156 |
-- ['registry/storagedrivers.md', 'Reference', ' ▪ Storage driver model' ] |
|
| 157 |
-- ['registry/notifications.md', 'Reference', ' ▪ Work with notifications' ] |
|
| 158 |
-- ['registry/spec/api.md', 'Reference', ' ▪ Registry Service API v2' ] |
|
| 159 |
-- ['registry/spec/json.md', 'Reference', ' ▪ JSON format' ] |
|
| 160 |
-- ['registry/spec/auth/token.md', 'Reference', ' ▪ Authenticate via central service' ] |
|
| 161 |
-- ['reference/api/hub_registry_spec.md', 'Reference', 'Docker Hub and Registry 1.0'] |
|
| 162 |
-- ['reference/api/registry_api.md', 'Reference', ' ▪ Docker Registry API v1'] |
|
| 163 |
-- ['reference/api/registry_api_client_libraries.md', 'Reference', ' ▪ Docker Registry 1.0 API client libraries'] |
|
| 164 |
-#- ['reference/image-spec-v1.md', 'Reference', 'Docker Image Specification v1.0.0'] |
|
| 165 |
-- ['reference/api/docker-io_api.md', 'Reference', 'Docker Hub API'] |
|
| 166 |
-#- ['reference/image-spec-v1.md', 'Reference', 'Docker Image Specification v1.0.0'] |
|
| 167 |
-- ['reference/api/docker_remote_api.md', 'Reference', 'Docker Remote API'] |
|
| 168 |
-- ['reference/api/docker_remote_api_v1.20.md', 'Reference', 'Docker Remote API v1.20'] |
|
| 169 |
-- ['reference/api/docker_remote_api_v1.19.md', 'Reference', 'Docker Remote API v1.19'] |
|
| 170 |
-- ['reference/api/docker_remote_api_v1.18.md', 'Reference', 'Docker Remote API v1.18'] |
|
| 171 |
-- ['reference/api/docker_remote_api_v1.17.md', 'Reference', 'Docker Remote API v1.17'] |
|
| 172 |
-- ['reference/api/docker_remote_api_v1.16.md', 'Reference', 'Docker Remote API v1.16'] |
|
| 173 |
-- ['reference/api/docker_remote_api_v1.15.md', '**HIDDEN**'] |
|
| 174 |
-- ['reference/api/docker_remote_api_v1.14.md', '**HIDDEN**'] |
|
| 175 |
-- ['reference/api/docker_remote_api_v1.13.md', '**HIDDEN**'] |
|
| 176 |
-- ['reference/api/docker_remote_api_v1.12.md', '**HIDDEN**'] |
|
| 177 |
-- ['reference/api/docker_remote_api_v1.11.md', '**HIDDEN**'] |
|
| 178 |
-- ['reference/api/docker_remote_api_v1.10.md', '**HIDDEN**'] |
|
| 179 |
-- ['reference/api/docker_remote_api_v1.9.md', '**HIDDEN**'] |
|
| 180 |
-- ['reference/api/docker_remote_api_v1.8.md', '**HIDDEN**'] |
|
| 181 |
-- ['reference/api/docker_remote_api_v1.7.md', '**HIDDEN**'] |
|
| 182 |
-- ['reference/api/docker_remote_api_v1.6.md', '**HIDDEN**'] |
|
| 183 |
-- ['reference/api/docker_remote_api_v1.5.md', '**HIDDEN**'] |
|
| 184 |
-- ['reference/api/docker_remote_api_v1.4.md', '**HIDDEN**'] |
|
| 185 |
-- ['reference/api/docker_remote_api_v1.3.md', '**HIDDEN**'] |
|
| 186 |
-- ['reference/api/docker_remote_api_v1.2.md', '**HIDDEN**'] |
|
| 187 |
-- ['reference/api/docker_remote_api_v1.1.md', '**HIDDEN**'] |
|
| 188 |
-- ['reference/api/docker_remote_api_v1.0.md', '**HIDDEN**'] |
|
| 189 |
-- ['reference/api/remote_api_client_libraries.md', 'Reference', 'Docker Remote API client libraries'] |
|
| 190 |
-- ['reference/api/docker_io_accounts_api.md', 'Reference', 'Docker Hub accounts API'] |
|
| 191 |
-- ['kitematic/faq.md', 'Reference', 'Kitematic: FAQ'] |
|
| 192 |
-- ['kitematic/known-issues.md', 'Reference', 'Kitematic: Known issues'] |
|
| 193 |
- |
|
| 194 |
-# Hidden registry files |
|
| 195 |
-- ['registry/storage-drivers/azure.md', '**HIDDEN**' ] |
|
| 196 |
-- ['registry/storage-drivers/filesystem.md', '**HIDDEN**' ] |
|
| 197 |
-- ['registry/storage-drivers/inmemory.md', '**HIDDEN**' ] |
|
| 198 |
-- ['registry/storage-drivers/s3.md', '**HIDDEN**' ] |
|
| 199 |
- |
|
| 200 |
-- ['jsearch.md', '**HIDDEN**'] |
|
| 201 |
- |
|
| 202 |
-# - ['static_files/README.md', 'static_files', 'README'] |
|
| 203 |
-- ['terms/index.md', '**HIDDEN**'] |
|
| 204 |
-- ['terms/layer.md', '**HIDDEN**'] |
|
| 205 |
-- ['terms/index.md', '**HIDDEN**'] |
|
| 206 |
-- ['terms/registry.md', '**HIDDEN**'] |
|
| 207 |
-- ['terms/container.md', '**HIDDEN**'] |
|
| 208 |
-- ['terms/repository.md', '**HIDDEN**'] |
|
| 209 |
-- ['terms/filesystem.md', '**HIDDEN**'] |
|
| 210 |
-- ['terms/image.md', '**HIDDEN**'] |
|
| 211 |
- |
|
| 212 |
- |
|
| 213 |
-# Project: |
|
| 214 |
-- ['project/index.md', '**HIDDEN**'] |
|
| 215 |
-- ['project/who-written-for.md', 'Contributor', 'README first'] |
|
| 216 |
-- ['project/software-required.md', 'Contributor', 'Get required software for Linux or OS X'] |
|
| 217 |
-- ['project/software-req-win.md', 'Contributor', 'Get required software for Windows'] |
|
| 218 |
-- ['project/set-up-git.md', 'Contributor', 'Configure Git for contributing'] |
|
| 219 |
-- ['project/set-up-dev-env.md', 'Contributor', 'Work with a development container'] |
|
| 220 |
-- ['project/test-and-docs.md', 'Contributor', 'Run tests and test documentation'] |
|
| 221 |
-- ['project/make-a-contribution.md', 'Contributor', 'Understand contribution workflow'] |
|
| 222 |
-- ['project/find-an-issue.md', 'Contributor', 'Find an issue'] |
|
| 223 |
-- ['project/work-issue.md', 'Contributor', 'Work on an issue'] |
|
| 224 |
-- ['project/create-pr.md', 'Contributor', 'Create a pull request'] |
|
| 225 |
-- ['project/review-pr.md', 'Contributor', 'Participate in the PR review'] |
|
| 226 |
-- ['project/advanced-contributing.md', 'Contributor', 'Advanced contributing'] |
|
| 227 |
-- ['project/get-help.md', 'Contributor', 'Where to get help'] |
|
| 228 |
-- ['project/coding-style.md', 'Contributor', 'Coding style guide'] |
|
| 229 |
-- ['project/doc-style.md', 'Contributor', 'Documentation style guide'] |
|
| 230 |
- |
| ... | ... |
@@ -4,7 +4,8 @@ title = "Coding style checklist" |
| 4 | 4 |
description = "List of guidelines for coding Docker contributions" |
| 5 | 5 |
keywords = ["change, commit, squash, request, pull request, test, unit test, integration tests, Go, gofmt, LGTM"] |
| 6 | 6 |
[menu.main] |
| 7 |
-parent = "mn_opensource" |
|
| 7 |
+parent = "smn_contribute" |
|
| 8 |
+weight=7 |
|
| 8 | 9 |
+++ |
| 9 | 10 |
<![end-metadata]--> |
| 10 | 11 |
|
| ... | ... |
@@ -1,10 +1,11 @@ |
| 1 | 1 |
<!--[metadata]> |
| 2 | 2 |
+++ |
| 3 |
-title = "Make a project contribution" |
|
| 3 |
+title = "Find and claim an issue" |
|
| 4 | 4 |
description = "Basic workflow for Docker contributions" |
| 5 |
-keywords = ["contribute, pull request, review, workflow, beginner, expert, squash, commit"] |
|
| 5 |
+keywords = ["contribute, issue, review, workflow, beginner, expert, squash, commit"] |
|
| 6 | 6 |
[menu.main] |
| 7 | 7 |
parent = "smn_contribute" |
| 8 |
+weight=2 |
|
| 8 | 9 |
+++ |
| 9 | 10 |
<![end-metadata]--> |
| 10 | 11 |
|
| ... | ... |
@@ -4,7 +4,8 @@ title = "Run tests and test documentation" |
| 4 | 4 |
description = "Describes Docker's testing infrastructure" |
| 5 | 5 |
keywords = ["make test, make docs, Go tests, gofmt, contributing, running tests"] |
| 6 | 6 |
[menu.main] |
| 7 |
-parent = "smn_contribute" |
|
| 7 |
+parent = "smn_develop" |
|
| 8 |
+weight=6 |
|
| 8 | 9 |
+++ |
| 9 | 10 |
<![end-metadata]--> |
| 10 | 11 |
|
| ... | ... |
@@ -1,14 +1,14 @@ |
| 1 | 1 |
<!--[metadata]> |
| 2 | 2 |
+++ |
| 3 |
-title = "Registry documentation" |
|
| 3 |
+title = "The Docker Hub and the Registry v1" |
|
| 4 | 4 |
description = "Documentation for docker Registry and Registry API" |
| 5 | 5 |
keywords = ["docker, registry, api, hub"] |
| 6 | 6 |
[menu.main] |
| 7 |
-parent="smn_registry_ref" |
|
| 7 |
+parent="smn_hub_ref" |
|
| 8 | 8 |
+++ |
| 9 | 9 |
<![end-metadata]--> |
| 10 | 10 |
|
| 11 |
-# The Docker Hub and the Registry 1.0 spec |
|
| 11 |
+# The Docker Hub and the Registry v1 |
|
| 12 | 12 |
|
| 13 | 13 |
## The three roles |
| 14 | 14 |
|
| ... | ... |
@@ -1,5 +1,6 @@ |
| 1 | 1 |
<!--[metadata]> |
| 2 | 2 |
+++ |
| 3 |
+draft = true |
|
| 3 | 4 |
title = "Registry API v1 client libraries" |
| 4 | 5 |
description = "Various client libraries available to use with the Docker registry API" |
| 5 | 6 |
keywords = ["API, Docker, index, registry, REST, documentation, clients, C#, Erlang, Go, Groovy, Java, JavaScript, Perl, PHP, Python, Ruby, Rust, Scala"] |
| ... | ... |
@@ -10,7 +10,9 @@ parent = "mn_reference" |
| 10 | 10 |
|
| 11 | 11 |
# Docker Command Line |
| 12 | 12 |
|
| 13 |
-{{ include "no-remote-sudo.md" }}
|
|
| 13 |
+> **Note:** if you are using a remote Docker daemon, such as Boot2Docker, |
|
| 14 |
+> then _do not_ type the `sudo` before the `docker` commands shown in the |
|
| 15 |
+> documentation's examples. |
|
| 14 | 16 |
|
| 15 | 17 |
To list available commands, either run `docker` with no parameters |
| 16 | 18 |
or execute `docker help`: |
| 17 | 19 |
deleted file mode 100644 |
| ... | ... |
@@ -1,357 +0,0 @@ |
| 1 |
-no_version_dropdown: true |
|
| 2 |
-page_title: Docker Hub Enterprise: Configuration options |
|
| 3 |
-page_description: Configuration instructions for Docker Hub Enterprise |
|
| 4 |
-page_keywords: docker, documentation, about, technology, understanding, enterprise, hub, registry |
|
| 5 |
- |
|
| 6 |
-# Configuring DHE |
|
| 7 |
- |
|
| 8 |
-## Overview |
|
| 9 |
- |
|
| 10 |
-This page will help you properly configure Docker Hub Enterprise (DHE) so it can |
|
| 11 |
-run in your environment. |
|
| 12 |
- |
|
| 13 |
-Start with DHE loaded in your browser and click the "Settings" tab to view |
|
| 14 |
-configuration options. You'll see options for configuring: |
|
| 15 |
- |
|
| 16 |
-* Domains and ports |
|
| 17 |
-* Security settings |
|
| 18 |
-* Storage settings |
|
| 19 |
-* Authentication settings |
|
| 20 |
-* Your DHE license |
|
| 21 |
- |
|
| 22 |
-## Domains and Ports |
|
| 23 |
- |
|
| 24 |
- |
|
| 25 |
- |
|
| 26 |
-* *Domain Name*: **required** defaults to an empty string, the fully qualified domain name assigned to the DHE host. |
|
| 27 |
-* *Load Balancer HTTP Port*: defaults to 80, used as the entry point for the image storage service. To see load balancer status, you can query |
|
| 28 |
-http://<dhe-host>/load_balancer_status. |
|
| 29 |
-* *Load Balancer HTTPS Port*: defaults to 443, used as the secure entry point |
|
| 30 |
-for the image storage service. |
|
| 31 |
-* *HTTP_PROXY*: defaults to an empty string, proxy server for HTTP requests. |
|
| 32 |
-* *HTTPS_PROXY*: defaults to an empty string, proxy server for HTTPS requests. |
|
| 33 |
-* *NO_PROXY*: defaults to an empty string, proxy bypass for HTTP and HTTPS requests. |
|
| 34 |
- |
|
| 35 |
- |
|
| 36 |
-> **Note**: If you need DHE to re-generate a self-signed certificate at some |
|
| 37 |
-> point, you'll need to first delete `/usr/local/etc/dhe/ssl/server.pem`, and |
|
| 38 |
-> then restart the DHE containers, either by changing and saving the "Domain Name", |
|
| 39 |
-> or using `bash -c "$(docker run dockerhubenterprise/manager restart)"`. |
|
| 40 |
- |
|
| 41 |
- |
|
| 42 |
-## Security |
|
| 43 |
- |
|
| 44 |
- |
|
| 45 |
- |
|
| 46 |
-* *SSL Certificate*: Used to enter the hash (string) from the SSL Certificate. |
|
| 47 |
-This cert must be accompanied by its private key, entered below. |
|
| 48 |
-* *Private Key*: The hash from the private key associated with the provided |
|
| 49 |
-SSL Certificate (as a standard x509 key pair). |
|
| 50 |
- |
|
| 51 |
-In order to run, DHE requires encrypted communications via HTTPS/SSL between (a) the DHE registry and your Docker Engine(s), and (b) between your web browser and the DHE admin server. There are a few options for setting this up: |
|
| 52 |
- |
|
| 53 |
-1. You can use the self-signed certificate DHE generates by default. |
|
| 54 |
-2. You can generate your own certificates using a public service or your enterprise's infrastructure. See the [Generating SSL certificates](#generating-ssl-certificates) section for the options available. |
|
| 55 |
- |
|
| 56 |
-If you are generating your own certificates, you can install them by following the instructions for |
|
| 57 |
-[Adding your own registry certificates to DHE](#adding-your-own-registry-certificates-to-dhe). |
|
| 58 |
- |
|
| 59 |
-On the other hand, if you choose to use the DHE-generated certificates, or the |
|
| 60 |
-certificates you generate yourself are not trusted by your client Docker hosts, |
|
| 61 |
-you will need to do one of the following: |
|
| 62 |
- |
|
| 63 |
-* [Install a registry certificate on all of your client Docker daemons](#installing-registry-certificates-on-client-docker-daemons), |
|
| 64 |
- |
|
| 65 |
-* Set your [client Docker daemons to run with an unconfirmed connection to the registry](#if-you-cant-install-the-certificates). |
|
| 66 |
- |
|
| 67 |
-### Generating SSL certificates |
|
| 68 |
- |
|
| 69 |
-There are three basic approaches to generating certificates: |
|
| 70 |
- |
|
| 71 |
-1. Most enterprises will have private key infrastructure (PKI) in place to |
|
| 72 |
-generate keys. Consult with your security team or whomever manages your private |
|
| 73 |
-key infrastructure. If you have this resource available, Docker recommends you |
|
| 74 |
-use it. |
|
| 75 |
- |
|
| 76 |
-2. If your enterprise can't provide keys, you can use a public Certificate |
|
| 77 |
-Authority (CA) like "InstantSSL.com" or "RapidSSL.com" to generate a |
|
| 78 |
-certificate. If your certificates are generated using a globally trusted |
|
| 79 |
-Certificate Authority, you won't need to install them on all of your |
|
| 80 |
-client Docker daemons. |
|
| 81 |
- |
|
| 82 |
-3. Use the self-signed registry certificate generated by DHE, and install it |
|
| 83 |
-onto the client Docker daemon hosts as shown below. |
|
| 84 |
- |
|
| 85 |
-### Adding your own Registry certificates to DHE |
|
| 86 |
- |
|
| 87 |
-Whichever method you use to generate certificates, once you have them |
|
| 88 |
-you can set up your DHE server to use them by navigating to the "Settings" page, |
|
| 89 |
-going to "Security," and putting the SSL Certificate text (including all |
|
| 90 |
-intermediate Certificates, starting with the host) into the |
|
| 91 |
-"SSL Certificate" edit box, and the previously generated Private key into |
|
| 92 |
-the "SSL Private Key" edit box. |
|
| 93 |
- |
|
| 94 |
-Click the "Save" button, and then wait for the DHE Admin site to restart and |
|
| 95 |
-reload. It should now be using the new certificate. |
|
| 96 |
- |
|
| 97 |
-Once the "Security" page has reloaded, it will show `#` hashes instead of the |
|
| 98 |
-certificate text you pasted in. |
|
| 99 |
- |
|
| 100 |
-If your certificate is signed by a chain of Certificate Authorities that are |
|
| 101 |
-already trusted by your Docker daemon servers, you can skip the "Installing |
|
| 102 |
-registry certificates" step below. |
|
| 103 |
- |
|
| 104 |
-### Installing Registry certificates on client Docker daemons |
|
| 105 |
- |
|
| 106 |
-If your certificates do not have a trusted Certificate Authority, you will need |
|
| 107 |
-to install them on each client Docker daemon host. |
|
| 108 |
- |
|
| 109 |
-The procedure for installing the DHE certificates on each Linux distribution has |
|
| 110 |
-slightly different steps, as shown below. |
|
| 111 |
- |
|
| 112 |
-You can test this certificate using `curl`: |
|
| 113 |
- |
|
| 114 |
-``` |
|
| 115 |
-$ curl https://dhe.yourdomain.com/v2/ |
|
| 116 |
-curl: (60) SSL certificate problem: self signed certificate |
|
| 117 |
-More details here: http://curl.haxx.se/docs/sslcerts.html |
|
| 118 |
- |
|
| 119 |
-curl performs SSL certificate verification by default, using a "bundle" |
|
| 120 |
- of Certificate Authority (CA) public keys (CA certs). If the default |
|
| 121 |
- bundle file isn't adequate, you can specify an alternate file |
|
| 122 |
- using the --cacert option. |
|
| 123 |
-If this HTTPS server uses a certificate signed by a CA represented in |
|
| 124 |
- the bundle, the certificate verification probably failed due to a |
|
| 125 |
- problem with the certificate (it might be expired, or the name might |
|
| 126 |
- not match the domain name in the URL). |
|
| 127 |
-If you'd like to turn off curl's verification of the certificate, use |
|
| 128 |
- the -k (or --insecure) option. |
|
| 129 |
- |
|
| 130 |
-$ curl --cacert /usr/local/etc/dhe/ssl/server.pem https://dhe.yourdomain.com/v2/ |
|
| 131 |
-{"errors":[{"code":"UNAUTHORIZED","message":"access to the requested resource is not authorized","detail":null}]}
|
|
| 132 |
-``` |
|
| 133 |
- |
|
| 134 |
-Continue by following the steps corresponding to your chosen OS. |
|
| 135 |
- |
|
| 136 |
-#### Ubuntu/Debian |
|
| 137 |
- |
|
| 138 |
-``` |
|
| 139 |
- $ export DOMAIN_NAME=dhe.yourdomain.com |
|
| 140 |
- $ openssl s_client -connect $DOMAIN_NAME:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM | sudo tee /usr/local/share/ca-certificates/$DOMAIN_NAME.crt |
|
| 141 |
- $ sudo update-ca-certificates |
|
| 142 |
- Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done. |
|
| 143 |
- Running hooks in /etc/ca-certificates/update.d....done. |
|
| 144 |
- $ sudo service docker restart |
|
| 145 |
- docker stop/waiting |
|
| 146 |
- docker start/running, process 29291 |
|
| 147 |
-``` |
|
| 148 |
- |
|
| 149 |
-#### RHEL |
|
| 150 |
- |
|
| 151 |
-``` |
|
| 152 |
- $ export DOMAIN_NAME=dhe.yourdomain.com |
|
| 153 |
- $ openssl s_client -connect $DOMAIN_NAME:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM | sudo tee /etc/pki/ca-trust/source/anchors/$DOMAIN_NAME.crt |
|
| 154 |
- $ sudo update-ca-trust |
|
| 155 |
- $ sudo /bin/systemctl restart docker.service |
|
| 156 |
-``` |
|
| 157 |
- |
|
| 158 |
-#### Boot2Docker 1.6.0 |
|
| 159 |
- |
|
| 160 |
-Install the CA cert (or the auto-generated cert) by adding the following to |
|
| 161 |
-your `/var/lib/boot2docker/bootsync.sh`: |
|
| 162 |
- |
|
| 163 |
-``` |
|
| 164 |
-#!/bin/sh |
|
| 165 |
- |
|
| 166 |
-cat /var/lib/boot2docker/server.pem >> /etc/ssl/certs/ca-certificates.crt |
|
| 167 |
-``` |
|
| 168 |
- |
|
| 169 |
- |
|
| 170 |
-Then get the certificate from the new DHE server using: |
|
| 171 |
- |
|
| 172 |
-``` |
|
| 173 |
-$ openssl s_client -connect dhe.yourdomain.com:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM | sudo tee -a /var/lib/boot2docker/server.pem |
|
| 174 |
-``` |
|
| 175 |
- |
|
| 176 |
-If your certificate chain is complicated, you may want to use the changes in |
|
| 177 |
-[Pull request 807](https://github.com/boot2docker/boot2docker/pull/807/files) |
|
| 178 |
- |
|
| 179 |
-Now you can either reboot your Boot2Docker virtual machine, or run the following to |
|
| 180 |
-install the server certificate, and then restart the Docker daemon. |
|
| 181 |
- |
|
| 182 |
-``` |
|
| 183 |
-$ sudo chmod 755 /var/lib/boot2docker/bootsync.sh |
|
| 184 |
-$ sudo /var/lib/boot2docker/bootsync.sh |
|
| 185 |
-$ sudo /etc/init.d/docker restart`. |
|
| 186 |
-``` |
|
| 187 |
- |
|
| 188 |
-### If you can't install the certificates |
|
| 189 |
- |
|
| 190 |
-If for some reason you can't install the certificate chain on a client Docker host, |
|
| 191 |
-or your certificates do not have a global CA, you can configure your Docker daemon to run in "insecure" mode. This is done by adding an extra flag, |
|
| 192 |
-`--insecure-registry host-ip|domain-name`, to your client Docker daemon startup flags. |
|
| 193 |
-You'll need to restart the Docker daemon for the change to take effect. |
|
| 194 |
- |
|
| 195 |
-This flag means that the communications between your Docker client and the DHE |
|
| 196 |
-Registry server are still encrypted, but the client Docker daemon is not |
|
| 197 |
-confirming that the Registry connection is not being hijacked or diverted. |
|
| 198 |
- |
|
| 199 |
-> **Note**: If you enter a "Domain Name" into the "Security" settings, it needs |
|
| 200 |
-> to be DNS resolvable on any client Docker daemons that are running in |
|
| 201 |
-> "insecure-registry" mode. |
|
| 202 |
- |
|
| 203 |
-To set the flag, follow the directions below for your operating system. |
|
| 204 |
- |
|
| 205 |
-#### Ubuntu |
|
| 206 |
- |
|
| 207 |
-On Ubuntu 14.04 LTS, you customize the Docker daemon configuration with the |
|
| 208 |
-`/etc/defaults/docker` file. |
|
| 209 |
- |
|
| 210 |
-Open or create the `/etc/defaults/docker` file, and add the |
|
| 211 |
-`--insecure-registry` flag to the `DOCKER_OPTS` setting (which may need to be |
|
| 212 |
-added or uncommented) as follows: |
|
| 213 |
- |
|
| 214 |
-``` |
|
| 215 |
-DOCKER_OPTS="--insecure-registry dhe.yourdomain.com" |
|
| 216 |
-``` |
|
| 217 |
- |
|
| 218 |
-Then restart the Docker daemon with `sudo service docker restart`. |
|
| 219 |
- |
|
| 220 |
-#### RHEL |
|
| 221 |
- |
|
| 222 |
-On RHEL, you customize the Docker daemon configuration with the |
|
| 223 |
-`/etc/sysconfig/docker` file. |
|
| 224 |
- |
|
| 225 |
-Open or create the `/etc/sysconfig/docker` file, and add the |
|
| 226 |
-`--insecure-registry` flag to the `OPTIONS` setting (which may need to be |
|
| 227 |
-added or uncommented) as follows: |
|
| 228 |
- |
|
| 229 |
-``` |
|
| 230 |
-OPTIONS="--insecure-registry dhe.yourdomain.com" |
|
| 231 |
-``` |
|
| 232 |
- |
|
| 233 |
-Then restart the Docker daemon with `sudo service docker restart`. |
|
| 234 |
- |
|
| 235 |
-### Boot2Docker |
|
| 236 |
- |
|
| 237 |
-On Boot2Docker, you customize the Docker daemon configuration with the |
|
| 238 |
-`/var/lib/boot2docker/profile` file. |
|
| 239 |
- |
|
| 240 |
-Open or create the `/var/lib/boot2docker/profile` file, and add an `EXTRA_ARGS` |
|
| 241 |
-setting as follows: |
|
| 242 |
- |
|
| 243 |
-``` |
|
| 244 |
-EXTRA_ARGS="--insecure-registry dhe.yourdomain.com" |
|
| 245 |
-``` |
|
| 246 |
- |
|
| 247 |
-Then restart the Docker daemon with `sudo /etc/init.d/docker restart`. |
|
| 248 |
- |
|
| 249 |
-## Image Storage Configuration |
|
| 250 |
- |
|
| 251 |
-DHE offers multiple methods for image storage, which are defined using specific |
|
| 252 |
-storage drivers. Image storage can be local, remote, or on a cloud service such |
|
| 253 |
-as S3. Storage drivers can be added or customized via the DHE storage driver |
|
| 254 |
-API. |
|
| 255 |
- |
|
| 256 |
- |
|
| 257 |
- |
|
| 258 |
-* *Yaml configuration file*: This file (`/usr/local/etc/dhe/storage.yml`) is |
|
| 259 |
-used to configure the image storage services. The editable text of the file is |
|
| 260 |
-displayed in the dialog box. The schema of this file is identical to that used |
|
| 261 |
-by the [Registry 2.0](https://docs.docker.com/registry/configuration/). |
|
| 262 |
-* If you are using the file system driver to provide local image storage, you will need to specify a root directory which will get mounted as a sub-path of |
|
| 263 |
-`/var/local/dhe/image-storage`. The default value of this root directory is |
|
| 264 |
-`/local`, so the full path to it is `/var/local/dhe/image-storage/local`. |
|
| 265 |
- |
|
| 266 |
-> **Note:** |
|
| 267 |
-> Saving changes you've made to settings will restart the Docker Hub Enterprise |
|
| 268 |
-> instance. The restart may cause a brief interruption for users of the image |
|
| 269 |
-> storage system. |
|
| 270 |
- |
|
| 271 |
-## Authentication |
|
| 272 |
- |
|
| 273 |
-The "Authentication" settings tab lets DHE administrators control access |
|
| 274 |
-to the DHE web admin tool and to the DHE Registry. |
|
| 275 |
- |
|
| 276 |
-The current authentication methods are `None`, `Basic` and `LDAP`. |
|
| 277 |
- |
|
| 278 |
-> **Note**: if you have issues logging into the DHE admin web interface after changing the authentication |
|
| 279 |
-> settings, you may need to use the [emergency access to the DHE admin web interface](./adminguide.md#Emergency-access-to-the-dhe-admin-web-interface). |
|
| 280 |
- |
|
| 281 |
-### No authentication |
|
| 282 |
- |
|
| 283 |
-No authentication means that everyone that can access your DHE web administration |
|
| 284 |
-site. This is not recommended for any use other than testing. |
|
| 285 |
- |
|
| 286 |
- |
|
| 287 |
-### Basic authentication |
|
| 288 |
- |
|
| 289 |
-The `Basic` authentication setting allows the admin to provide username/password pairs local to DHE. |
|
| 290 |
-Any user who can successfully authenticate can use DHE to push and pull Docker images. |
|
| 291 |
-You can optionally filter the list of users to a subset of just those users with access to the DHE |
|
| 292 |
-admin web interface. |
|
| 293 |
- |
|
| 294 |
- |
|
| 295 |
- |
|
| 296 |
-* A button to add one user, or to upload a CSV file containing username, |
|
| 297 |
-password pairs |
|
| 298 |
-* A DHE website Administrator Filter, allowing you to either |
|
| 299 |
-* * *Allow all authenticated users*: to log into the DHE admin web interface, or |
|
| 300 |
-* * *Whitelist usernames*: which allows you to restrict access to the web interface to a listed set of users. |
|
| 301 |
- |
|
| 302 |
-### LDAP authentication |
|
| 303 |
- |
|
| 304 |
-Using LDAP authentication allows you to integrate your DHE registry into your |
|
| 305 |
-organization's existing user and authentication database. |
|
| 306 |
- |
|
| 307 |
-As this involves existing infrastructure external to DHE and Docker, you will need to |
|
| 308 |
-gather the details required to configure DHE for your organization's particular LDAP |
|
| 309 |
-implementation. |
|
| 310 |
- |
|
| 311 |
-You can test that you have the necessary LDAP server information by using it from |
|
| 312 |
-inside a Docker container running on the same server as your DHE: |
|
| 313 |
- |
|
| 314 |
-> **Note**: if the LDAP server is configured to use *StartTLS*, then you need to add `-Z` to the |
|
| 315 |
-> `ldapsearch` command examples below. |
|
| 316 |
- |
|
| 317 |
-``` |
|
| 318 |
-docker run --rm -it svendowideit/ldapsearch -h <LDAP Server hostname> -b <User Base DN> -D <Search User DN> -w <Search User Password> |
|
| 319 |
-``` |
|
| 320 |
- |
|
| 321 |
-or if the LDAP server is set up to allow anonymous access (which means your *Search User DN* and *Search User Password* settings can remain empty): |
|
| 322 |
- |
|
| 323 |
-``` |
|
| 324 |
-docker run --rm -it svendowideit/ldapsearch -h <LDAP Server hostname> -b <User Base DN> -x |
|
| 325 |
-``` |
|
| 326 |
- |
|
| 327 |
-The result of these queries should be a (very) long list - if you get an authentication error, |
|
| 328 |
-then the details you have been given are not sufficient. |
|
| 329 |
- |
|
| 330 |
-The *User Login Attribute* key setting must match the field used in the LDAP server |
|
| 331 |
-for the user's login-name. On OpenLDAP, it's generally `uid`, and on Microsoft Active Directory |
|
| 332 |
-servers, it's `sAMAccountName`. The `ldapsearch` output above should allow you to |
|
| 333 |
-confirm which setting you need. |
|
| 334 |
- |
|
| 335 |
- |
|
| 336 |
- |
|
| 337 |
-* *Use StartTLS*: defaults to unchecked, check to enable StartTLS |
|
| 338 |
-* *LDAP Server URL*: **required** defaults to null, LDAP server URL (e.g., - ldap://example.com) |
|
| 339 |
-* *User Base DN*: **required** defaults to null, user base DN in the form (e.g., - dc=example,dc=com) |
|
| 340 |
-* *User Login Attribute*: **required** defaults to null, user login attribute (e.g., - uid or sAMAccountName) |
|
| 341 |
-* *Search User DN*: **required** defaults to null, search user DN (e.g., - domain\username) |
|
| 342 |
-* *Search User Password*: **required** defaults to null, search user password |
|
| 343 |
-* A *DHE Registry User filter*: allowing you to either |
|
| 344 |
-* * *Allow all authenticated users* to push or pull any images, or |
|
| 345 |
-* * *Filter LDAP search results*: which allows you to restrict DHE registry pull and push to users matching the LDAP filter, |
|
| 346 |
-* * *Whitelist usernames*: which allows you to restrict DHE registry pull and push to the listed set of users. |
|
| 347 |
-* A *DHE website Administrator filter*, allowing you to either |
|
| 348 |
-* * *Allow all authenticated users*: to log into the DHE admin web interface, or |
|
| 349 |
-* * *Filter LDAP search results*: which allows you to restrict DHE admin web access to users matching the LDAP filter, |
|
| 350 |
-* * *Whitelist usernames*: which allows you to restrict access to the web interface to the listed set of users. |
|
| 351 |
- |
|
| 352 |
- |
|
| 353 |
-## Next Steps |
|
| 354 |
- |
|
| 355 |
-For information on getting support for DHE, take a look at the |
|
| 356 |
-[Support information](./support.md). |
|
| 357 |
- |
| 358 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,331 +0,0 @@ |
| 1 |
-no_version_dropdown: true |
|
| 2 |
-page_title: Docker Hub Enterprise: Quick-start: Basic Workflow |
|
| 3 |
-page_description: Brief tutorial on the basics of Docker Hub Enterprise user workflow |
|
| 4 |
-page_keywords: docker, documentation, about, technology, understanding, enterprise, hub, registry, image, repository |
|
| 5 |
- |
|
| 6 |
- |
|
| 7 |
-# Docker Hub Enterprise Quick Start: Basic User Workflow |
|
| 8 |
- |
|
| 9 |
-## Overview |
|
| 10 |
- |
|
| 11 |
-This Quick Start Guide will give you a hands-on look at the basics of using |
|
| 12 |
-Docker Hub Enterprise (DHE), Docker's on-premise image storage application. |
|
| 13 |
-This guide will walk you through using DHE to complete a typical, and critical, |
|
| 14 |
-part of building a development pipeline: setting up a Jenkins instance. Once you |
|
| 15 |
-complete the task, you should have a good idea of how DHE works and how it might |
|
| 16 |
-be useful to you. |
|
| 17 |
- |
|
| 18 |
-Specifically, this guide demonstrates the process of retrieving the |
|
| 19 |
-[official Docker image for Jenkins](https://registry.hub.docker.com/_/jenkins/), |
|
| 20 |
-customizing it to suit your needs, and then hosting it on your private instance |
|
| 21 |
-of DHE located inside your enterprise's firewalled environment. Your developers |
|
| 22 |
-will then be able to retrieve the custom Jenkins image in order to use it to |
|
| 23 |
-build CI/CD infrastructure for their projects, no matter the platform they're |
|
| 24 |
-working from, be it a laptop, a VM, or a cloud provider. |
|
| 25 |
- |
|
| 26 |
-The guide will walk you through the following steps: |
|
| 27 |
- |
|
| 28 |
-1. Pulling the official Jenkins image from the public Docker Hub |
|
| 29 |
-2. Customizing the Jenkins image to suit your needs |
|
| 30 |
-3. Pushing the customized image to DHE |
|
| 31 |
-4. Pulling the customized image from DHE |
|
| 32 |
-4. Launching a container from the custom image |
|
| 33 |
-5. Using the new Jenkins container |
|
| 34 |
- |
|
| 35 |
-You should be able to complete this guide in about thirty minutes. |
|
| 36 |
- |
|
| 37 |
-> **Note:** This guide assumes you have installed a working instance of DHE |
|
| 38 |
-> reachable at dhe.yourdomain.com. If you need help installing and configuring |
|
| 39 |
-> DHE, please consult the |
|
| 40 |
-[installation instructions](./install.md). |
|
| 41 |
- |
|
| 42 |
- |
|
| 43 |
-## Pulling the official Jenkins image |
|
| 44 |
- |
|
| 45 |
-> **Note:** This guide assumes you are familiar with basic Docker concepts such |
|
| 46 |
-> as images, containers, and registries. If you need to learn more about Docker |
|
| 47 |
-> fundamentals, please consult the |
|
| 48 |
-> [Docker user guide](https://docs.docker.com/userguide/). |
|
| 49 |
- |
|
| 50 |
-First, you will retrieve a copy of the official Jenkins image from the Docker Hub. By default, if |
|
| 51 |
-Docker can't find an image locally, it will attempt to pull the image from the |
|
| 52 |
-Docker Hub. From the CLI of a machine running the Docker Engine on your network, use |
|
| 53 |
-the |
|
| 54 |
-[`docker pull`](https://docs.docker.com/reference/commandline/cli/#pull) |
|
| 55 |
-command to pull the public Jenkins image. |
|
| 56 |
- |
|
| 57 |
- $ docker pull jenkins |
|
| 58 |
- |
|
| 59 |
-> **Note:** This guide assumes you can run Docker commands from a machine where |
|
| 60 |
-> you are a member of the `docker` group, or have root privileges. Otherwise, you may |
|
| 61 |
-> need to add `sudo` to the example commands below. |
|
| 62 |
- |
|
| 63 |
-Docker will start the process of pulling the image from the Hub. Once it has completed, the Jenkins image should be visible in the output of a [`docker images`](https://docs.docker.com/reference/commandline/cli/#images) command, which lists your available images: |
|
| 64 |
- |
|
| 65 |
- $ docker images |
|
| 66 |
- REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE |
|
| 67 |
- jenkins latest 1a7cc22b0ee9 6 days ago 662 MB |
|
| 68 |
- |
|
| 69 |
-> **Note:** Because the `pull` command did not specify any tags, it will pull |
|
| 70 |
-> the latest version of the public Jenkins image. If your enterprise environment |
|
| 71 |
-> requires you to use a specific version, add the tag for the version you need |
|
| 72 |
-> (e.g., `jenkins:1.565`). |
|
| 73 |
- |
|
| 74 |
-## Customizing the Jenkins image |
|
| 75 |
- |
|
| 76 |
-Now that you have a local copy of the Jenkins image, you'll customize it so that |
|
| 77 |
-the containers it builds will integrate with your infrastructure. To do this, |
|
| 78 |
-you'll create a custom Docker image that adds a Jenkins plugin that provides |
|
| 79 |
-fine grained user management. You'll also configure Jenkins to be more secure by |
|
| 80 |
-disabling HTTP access and forcing it to use HTTPS. |
|
| 81 |
-You'll do this by using a `Dockerfile` and the `docker build` command. |
|
| 82 |
- |
|
| 83 |
-> **Note:** These are obviously just a couple of examples of the many ways you |
|
| 84 |
-> can modify and configure Jenkins. Feel free to add or substitute whatever |
|
| 85 |
-> customization is necessary to run Jenkins in your environment. |
|
| 86 |
- |
|
| 87 |
-### Creating a `build` context |
|
| 88 |
- |
|
| 89 |
-In order to add the new plugin and configure HTTPS access to the custom Jenkins |
|
| 90 |
-image, you need to: |
|
| 91 |
- |
|
| 92 |
-1. Create text file that defines the new plugin |
|
| 93 |
-2. Create copies of the private key and certificate |
|
| 94 |
- |
|
| 95 |
-All of the above files need to be in the same directory as the Dockerfile you |
|
| 96 |
-will create in the next step. |
|
| 97 |
- |
|
| 98 |
-1. Create a build directory called `build`, and change to that new directory: |
|
| 99 |
- |
|
| 100 |
- $ mkdir build && cd build |
|
| 101 |
- |
|
| 102 |
-In this directory, create a new file called `plugins` and add the following |
|
| 103 |
-line: |
|
| 104 |
- |
|
| 105 |
- role-strategy:2.2.0 |
|
| 106 |
- |
|
| 107 |
-(The plugin version used above was the latest version at the time of writing.) |
|
| 108 |
- |
|
| 109 |
-2. You will also need to make copies of the server's private key and certificate. Give the copies the following names - `https.key` and `https.pem`. |
|
| 110 |
- |
|
| 111 |
-> **Note:** Because creating new keys varies widely by platform and |
|
| 112 |
-> implementation, this guide won't cover key generation. We assume you have |
|
| 113 |
-> access to existing keys. If you don't have access, or can't generate keys |
|
| 114 |
-> yourself, feel free to skip the steps involving them and HTTPS config. The |
|
| 115 |
-> guide will still walk you through building a custom Jenkins image and pushing |
|
| 116 |
-> and pulling that image using DHE. |
|
| 117 |
- |
|
| 118 |
-### Creating a Dockerfile |
|
| 119 |
- |
|
| 120 |
-In the same directory as the `plugins` file and the private key and certificate, |
|
| 121 |
-create a new [`Dockerfile`](https://docs.docker.com/reference/builder/) with the |
|
| 122 |
-following contents: |
|
| 123 |
- |
|
| 124 |
- FROM jenkins |
|
| 125 |
- |
|
| 126 |
- #New plugins must be placed in the plugins file |
|
| 127 |
- COPY plugins /usr/share/jenkins/plugins |
|
| 128 |
- |
|
| 129 |
- #The plugins.sh script will install new plugins |
|
| 130 |
- RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins |
|
| 131 |
- |
|
| 132 |
- #Copy private key and cert to image |
|
| 133 |
- COPY https.pem /var/lib/jenkins/cert |
|
| 134 |
- COPY https.key /var/lib/jenkins/pk |
|
| 135 |
- |
|
| 136 |
- #Configure HTTP off and HTTPS on, using port 1973 |
|
| 137 |
- ENV JENKINS_OPTS --httpPort=-1 --httpsPort=1973 --httpsCertificate=/var/lib/jenkins/cert --httpsPrivateKey=/var/lib/jenkins/pk |
|
| 138 |
- |
|
| 139 |
-The first `COPY` instruction in the above will copy the `plugin` file created |
|
| 140 |
-earlier into the `/usr/share/jenkins` directory within the custom image you are |
|
| 141 |
-defining with the `Dockerfile`. |
|
| 142 |
- |
|
| 143 |
-The `RUN` instruction will execute the `/usr/local/bin/plugins.sh` script with |
|
| 144 |
-the newly copied `plugins` file, which will install the listed plugin. |
|
| 145 |
- |
|
| 146 |
-The next two `COPY` instructions copy the server's private key and certificate |
|
| 147 |
-into the required directories within the new image. |
|
| 148 |
- |
|
| 149 |
-The `ENV` instruction creates an environment variable called `JENKINS_OPT` in |
|
| 150 |
-the image you are about to create. This environment variable will be present in |
|
| 151 |
-any containers launched form the image and contains the required settings to |
|
| 152 |
-tell Jenkins to disable HTTP and operate over HTTPS. |
|
| 153 |
- |
|
| 154 |
-> **Note:** You can specify any valid port number as part of the `JENKINS_OPT` |
|
| 155 |
-> environment variable declared above. The value `1973` used in the example is |
|
| 156 |
-> arbitrary. |
|
| 157 |
- |
|
| 158 |
-The `Dockerfile`, the `plugins` file, as well as the private key and |
|
| 159 |
-certificate, must all be in the same directory because the `docker build` |
|
| 160 |
-command uses the directory that contains the `Dockerfile` as its "build |
|
| 161 |
-context". Only files contained within that "build context" will be included in |
|
| 162 |
-the image being built. |
|
| 163 |
- |
|
| 164 |
-### Building your custom image |
|
| 165 |
- |
|
| 166 |
-Now that the `Dockerfile`, the `plugins` file, and the files required for HTTPS |
|
| 167 |
-operation are created in your current working directory, you can build your |
|
| 168 |
-custom image using the |
|
| 169 |
-[`docker build` command](https://docs.docker.com/reference/commandline/cli/#build): |
|
| 170 |
- |
|
| 171 |
- docker build -t dhe.yourdomain.com/ci-infrastructure/jnkns-img . |
|
| 172 |
- |
|
| 173 |
-> **Note:** Don't miss the period (`.`) at the end of the command above. This |
|
| 174 |
-> tells the `docker build` command to use the current working directory as the |
|
| 175 |
-> "build context". |
|
| 176 |
- |
|
| 177 |
-This command will build a new Docker image called `jnkns-img` which is based on |
|
| 178 |
-the public Jenkins image you pulled earlier, but contains all of your |
|
| 179 |
-customization. |
|
| 180 |
- |
|
| 181 |
-Please note the use of the `-t` flag in the `docker build` command above. The |
|
| 182 |
-`-t` flag lets you tag an image so it can be pushed to a custom repository. In |
|
| 183 |
-the example above, the new image is tagged so it can be pushed to the |
|
| 184 |
-`ci-infrastructure` Repository within the `dhe.yourdomain.com` registry (your |
|
| 185 |
-local DHE instance). This will be important when you need to `push` the |
|
| 186 |
-customized image to DHE later. |
|
| 187 |
- |
|
| 188 |
-A `docker images` command will now show the custom image alongside the Jenkins |
|
| 189 |
-image pulled earlier: |
|
| 190 |
- |
|
| 191 |
- $ sudo docker images |
|
| 192 |
- REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE |
|
| 193 |
- dhe.yourdomain.com/ci-infrastructure/jnkns-img latest fc0ab3008d40 2 minutes ago 674.5 MB |
|
| 194 |
- jenkins latest 1a7cc22b0ee9 6 days ago 662 MB |
|
| 195 |
- |
|
| 196 |
-## Pushing to Docker Hub Enterprise |
|
| 197 |
- |
|
| 198 |
-> **Note**: If your DHE instance has authentication enabled, you will need to |
|
| 199 |
-> use your command line to `docker login <dhe-hostname>` (e.g., `docker login |
|
| 200 |
-> dhe.yourdomain.com`). |
|
| 201 |
-> |
|
| 202 |
-> Failures due to unauthenticated `docker push` and `docker pull` commands will |
|
| 203 |
-> look like : |
|
| 204 |
-> |
|
| 205 |
-> $ docker pull dhe.yourdomain.com/hello-world |
|
| 206 |
-> Pulling repository dhe.yourdomain.com/hello-world |
|
| 207 |
-> FATA[0001] Error: image hello-world:latest not found |
|
| 208 |
-> |
|
| 209 |
-> $ docker push dhe.yourdomain.com/hello-world |
|
| 210 |
-> The push refers to a repository [dhe.yourdomain.com/hello-world] (len: 1) |
|
| 211 |
-> e45a5af57b00: Image push failed |
|
| 212 |
-> FATA[0001] Error pushing to registry: token auth attempt for registry |
|
| 213 |
-> https://dhe.yourdomain.com/v2/: |
|
| 214 |
-> https://dhe.yourdomain.com/auth/v2/token/ |
|
| 215 |
-> ?scope=repository%3Ahello-world%3Apull%2Cpush&service=dhe.yourdomain.com |
|
| 216 |
-> request failed with status: 401 Unauthorized |
|
| 217 |
- |
|
| 218 |
-Now that you've created the custom image, it can be pushed to DHE using the |
|
| 219 |
-[`docker push`command](https://docs.docker.com/reference/commandline/cli/#push): |
|
| 220 |
- |
|
| 221 |
- $ docker push dhe.yourdomain.com/ci-infrastructure/jnkns-img |
|
| 222 |
- 511136ea3c5a: Image successfully pushed |
|
| 223 |
- 848d84b4b2ab: Image successfully pushed |
|
| 224 |
- 71d9d77ae89e: Image already exists |
|
| 225 |
- <truncated ouput...> |
|
| 226 |
- 492ed3875e3e: Image successfully pushed |
|
| 227 |
- fc0ab3008d40: Image successfully pushed |
|
| 228 |
- |
|
| 229 |
-You can view the traffic throughput while the custom image is being pushed from |
|
| 230 |
-the `System Health` tab in DHE: |
|
| 231 |
- |
|
| 232 |
- |
|
| 233 |
- |
|
| 234 |
-Once the image is successfully pushed, it can be downloaded, or pulled, by any |
|
| 235 |
-Docker host that has access to DHE. |
|
| 236 |
- |
|
| 237 |
-## Pulling from Docker Hub Enterprise |
|
| 238 |
-To pull the `jnkns-img` image from DHE, run the |
|
| 239 |
-[`docker pull`](https://docs.docker.com/reference/commandline/cli/#pull) |
|
| 240 |
-command from any Docker Host that has access to your DHE instance: |
|
| 241 |
- |
|
| 242 |
- $ docker pull dhe.yourdomain.com/ci-infrastructure/jnkns-img |
|
| 243 |
- latest: Pulling from dhe.yourdomain.com/ci-infrastructure/jnkns-img |
|
| 244 |
- 511136ea3c5a: Pull complete |
|
| 245 |
- 848d84b4b2ab: Pull complete |
|
| 246 |
- 71d9d77ae89e: Pull complete |
|
| 247 |
- <truncated ouput...> |
|
| 248 |
- 492ed3875e3e: Pull complete |
|
| 249 |
- fc0ab3008d40: Pull complete |
|
| 250 |
- dhe.yourdomain.com/ci-infrastructure/jnkns-img:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. |
|
| 251 |
- Status: Downloaded newer image for dhe.yourdomain.com/ci-infrastructure/jnkns-img:latest |
|
| 252 |
- |
|
| 253 |
-You can view the traffic throughput while the custom image is being pulled from |
|
| 254 |
-the `System Health` tab in DHE: |
|
| 255 |
- |
|
| 256 |
- |
|
| 257 |
- |
|
| 258 |
-Now that the `jnkns-img` image has been pulled locally from DHE, you can view it |
|
| 259 |
-in the output of the `docker images` command: |
|
| 260 |
- |
|
| 261 |
- $ docker images |
|
| 262 |
- REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE |
|
| 263 |
- dhe.yourdomain.com/ci-infrastructure/jnkns-img latest fc0ab3008d40 8 minutes ago 674.5 MB |
|
| 264 |
- |
|
| 265 |
-## Launching a custom Jenkins container |
|
| 266 |
- |
|
| 267 |
-Now that you've successfully pulled the customized Jenkins image from DHE, you |
|
| 268 |
-can create a container from it with the |
|
| 269 |
-[`docker run` command](https://docs.docker.com/reference/commandline/cli/#run): |
|
| 270 |
- |
|
| 271 |
- |
|
| 272 |
- $ docker run -p 1973:1973 --name jenkins01 dhe.yourdomain.com/ci-infrastructure/jnkns-img |
|
| 273 |
- /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy |
|
| 274 |
- /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy -> init.groovy.d/tcp-slave-angent-port.groovy |
|
| 275 |
- copy init.groovy.d/tcp-slave-angent-port.groovy to JENKINS_HOME |
|
| 276 |
- /usr/share/jenkins/ref/plugins/role-strategy.hpi |
|
| 277 |
- /usr/share/jenkins/ref/plugins/role-strategy.hpi -> plugins/role-strategy.hpi |
|
| 278 |
- copy plugins/role-strategy.hpi to JENKINS_HOME |
|
| 279 |
- /usr/share/jenkins/ref/plugins/dockerhub.hpi |
|
| 280 |
- /usr/share/jenkins/ref/plugins/dockerhub.hpi -> plugins/dockerhub.hpi |
|
| 281 |
- copy plugins/dockerhub.hpi to JENKINS_HOME |
|
| 282 |
- <truncated output...> |
|
| 283 |
- INFO: Jenkins is fully up and running |
|
| 284 |
- |
|
| 285 |
-> **Note:** The `docker run` command above maps port 1973 in the container |
|
| 286 |
-> through to port 1973 on the host. This is the HTTPS port you specified in the |
|
| 287 |
-> Dockerfile earlier. If you specified a different HTTPS port in your |
|
| 288 |
-> Dockerfile, you will need to substitute this with the correct port numbers for |
|
| 289 |
-> your environment. |
|
| 290 |
- |
|
| 291 |
-You can view the newly launched a container, called `jenkins01`, using the |
|
| 292 |
-[`docker ps` command](https://docs.docker.com/reference/commandline/cli/#ps): |
|
| 293 |
- |
|
| 294 |
- $ docker ps |
|
| 295 |
- CONTAINER ID IMAGE COMMAND CREATED STATUS ...PORTS NAMES |
|
| 296 |
- 2e5d2f068504 dhe.yourdomain.com/ci-infrastructure/jnkns-img:latest "/usr/local/bin/jenk About a minute ago Up About a minute 50000/tcp, 0.0.0.0:1973->1973/tcp jenkins01 |
|
| 297 |
- |
|
| 298 |
- |
|
| 299 |
-## Accessing the new Jenkins container |
|
| 300 |
- |
|
| 301 |
-The previous `docker run` command mapped port `1973` on the container to port |
|
| 302 |
-`1973` on the Docker host, so the Jenkins Web UI can be accessed at |
|
| 303 |
-`https://<docker-host>:1973` (Don't forget the `s` at the end of `https`.) |
|
| 304 |
- |
|
| 305 |
-> **Note:** If you are using a self-signed certificate, you may get a security |
|
| 306 |
-> warning from your browser telling you that the certificate is self-signed and |
|
| 307 |
-> not trusted. You may wish to add the certificate to the trusted store in order |
|
| 308 |
-> to prevent further warnings in the future. |
|
| 309 |
- |
|
| 310 |
- |
|
| 311 |
- |
|
| 312 |
-From within the Jenkins Web UI, navigate to `Manage Jenkins` (on the left-hand |
|
| 313 |
-pane) > `Manage Plugins` > `Installed`. The `Role-based Authorization Strategy` |
|
| 314 |
-plugin should be present with the `Uninstall` button available to the right. |
|
| 315 |
- |
|
| 316 |
- |
|
| 317 |
- |
|
| 318 |
-In another browser session, try to access Jenkins via the default HTTP port 8080 |
|
| 319 |
- `http://<docker-host>:8080`. This should result in a "connection timeout", |
|
| 320 |
-showing that Jenkins is not available on its default port 8080 over HTTP. |
|
| 321 |
- |
|
| 322 |
-This demonstration shows your Jenkins image has been configured correctly for |
|
| 323 |
-HTTPS access, your new plugin was added and is ready for use, and HTTP access |
|
| 324 |
-has been disabled. At this point, any member of your team can use `docker pull` |
|
| 325 |
-to access the image from your DHE instance, allowing them to access a |
|
| 326 |
-configured, secured Jenkins instance that can run on any infrastructure. |
|
| 327 |
- |
|
| 328 |
-## Next Steps |
|
| 329 |
- |
|
| 330 |
-For more information on using DHE, take a look at the |
|
| 331 |
-[User's Guide](./userguide.md). |
| 332 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,241 +0,0 @@ |
| 1 |
-no_version_dropdown: true |
|
| 2 |
-page_title: Docker Hub Enterprise: Release notes |
|
| 3 |
-page_description: Release notes for Docker Hub Enterprise |
|
| 4 |
-page_keywords: docker, documentation, about, technology, understanding, enterprise, hub, registry, release |
|
| 5 |
- |
|
| 6 |
-# Release Notes |
|
| 7 |
- |
|
| 8 |
-## Docker Hub Enterprise |
|
| 9 |
- |
|
| 10 |
-### DHE 1.0.1 |
|
| 11 |
-(11 May 2015) |
|
| 12 |
- |
|
| 13 |
-- Addresses compatibility issue with 1.6.1 CS Docker Engine |
|
| 14 |
- |
|
| 15 |
-### DHE 1.0.0 |
|
| 16 |
-(23 Apr 2015) |
|
| 17 |
- |
|
| 18 |
-- First release |
|
| 19 |
- |
|
| 20 |
-## Commercially Supported Docker Engine |
|
| 21 |
- |
|
| 22 |
-### CS Docker Engine 1.6.2-cs5 |
|
| 23 |
-(21 May 2015) |
|
| 24 |
- |
|
| 25 |
-For customers running Docker Engine on [supported versions of Red Hat Enterprise |
|
| 26 |
-Linux (RHEL)](https://www.docker.com/enterprise/support/) with [SELinux |
|
| 27 |
-enabled](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/ |
|
| 28 |
-6/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux |
|
| 29 |
--Enabling_and_Disabling_SELinux.html), the `docker build` and `docker run` |
|
| 30 |
-commands will not have DNS host name resolution and bind-mounted volumes may |
|
| 31 |
-not be accessible. |
|
| 32 |
-As a result, customers with SELinux will be unable to use hostname-based network |
|
| 33 |
-access in either `docker build` or `docker run`, nor will they be able to |
|
| 34 |
-`docker run` containers |
|
| 35 |
-that use `--volume` or `-v` bind-mounts (with an incorrect SELinux label) in |
|
| 36 |
-their environment. By installing Docker |
|
| 37 |
-Engine 1.6.2-cs5, customers can use Docker as intended on RHEL with SELinux enabled. |
|
| 38 |
- |
|
| 39 |
-For example, you see will failures like: |
|
| 40 |
- |
|
| 41 |
-``` |
|
| 42 |
-[root@dhe ~]# docker -v |
|
| 43 |
-Docker version 1.6.0-cs2, build b8dd430 |
|
| 44 |
-[root@dhe ~]# ping dhe.home.org.au |
|
| 45 |
-PING dhe.home.org.au (10.10.10.104) 56(84) bytes of data. |
|
| 46 |
-64 bytes from dhe.home.gateway (10.10.10.104): icmp_seq=1 ttl=64 time=0.663 ms |
|
| 47 |
-^C |
|
| 48 |
-2 packets transmitted, 2 received, 0% packet loss, time 1001ms |
|
| 49 |
-rtt min/avg/max/mdev = 0.078/0.370/0.663/0.293 ms |
|
| 50 |
-[root@dhe ~]# docker run --rm -it debian ping dhe.home.org.au |
|
| 51 |
-ping: unknown host |
|
| 52 |
-[root@dhe ~]# docker run --rm -it debian cat /etc/resolv.conf |
|
| 53 |
-cat: /etc/resolv.conf: Permission denied |
|
| 54 |
-[root@dhe ~]# docker run --rm -it debian apt-get update |
|
| 55 |
-Err http://httpredir.debian.org jessie InRelease |
|
| 56 |
- |
|
| 57 |
-Err http://security.debian.org jessie/updates InRelease |
|
| 58 |
- |
|
| 59 |
-Err http://httpredir.debian.org jessie-updates InRelease |
|
| 60 |
- |
|
| 61 |
-Err http://security.debian.org jessie/updates Release.gpg |
|
| 62 |
- Could not resolve 'security.debian.org' |
|
| 63 |
-Err http://httpredir.debian.org jessie Release.gpg |
|
| 64 |
- Could not resolve 'httpredir.debian.org' |
|
| 65 |
-Err http://httpredir.debian.org jessie-updates Release.gpg |
|
| 66 |
- Could not resolve 'httpredir.debian.org' |
|
| 67 |
-[output truncated] |
|
| 68 |
- |
|
| 69 |
-``` |
|
| 70 |
- |
|
| 71 |
-or when running a `docker build`: |
|
| 72 |
- |
|
| 73 |
-``` |
|
| 74 |
-[root@dhe ~]# docker build . |
|
| 75 |
-Sending build context to Docker daemon 11.26 kB |
|
| 76 |
-Sending build context to Docker daemon |
|
| 77 |
-Step 0 : FROM fedora |
|
| 78 |
- ---> e26efd418c48 |
|
| 79 |
-Step 1 : RUN yum install httpd |
|
| 80 |
- ---> Running in cf274900ea35 |
|
| 81 |
- |
|
| 82 |
-One of the configured repositories failed (Fedora 21 - x86_64), |
|
| 83 |
-and yum doesn't have enough cached data to continue. At this point the only |
|
| 84 |
-safe thing yum can do is fail. There are a few ways to work "fix" this: |
|
| 85 |
- |
|
| 86 |
-[output truncated] |
|
| 87 |
-``` |
|
| 88 |
- |
|
| 89 |
- |
|
| 90 |
-**Affected Versions**: All previous versions of Docker Engine when SELinux |
|
| 91 |
-is enabled. |
|
| 92 |
- |
|
| 93 |
-Docker **highly recommends** that all customers running previous versions of |
|
| 94 |
-Docker Engine update to this release. |
|
| 95 |
- |
|
| 96 |
-#### **How to workaround this issue** |
|
| 97 |
- |
|
| 98 |
-Customers who choose not to install this update have two options. The |
|
| 99 |
-first option is to disable SELinux. This is *not recommended* for production |
|
| 100 |
-systems where SELinux is typically required. |
|
| 101 |
- |
|
| 102 |
-The second option is to pass the following parameter in to `docker run`. |
|
| 103 |
- |
|
| 104 |
- --security-opt=label:type:docker_t |
|
| 105 |
- |
|
| 106 |
-This parameter cannot be passed to the `docker build` command. |
|
| 107 |
- |
|
| 108 |
-#### **Upgrade notes** |
|
| 109 |
- |
|
| 110 |
-When upgrading, make sure you stop DHE first, perform the Engine upgrade, and |
|
| 111 |
-then restart DHE. |
|
| 112 |
- |
|
| 113 |
-If you are running with SELinux enabled, previous Docker Engine releases allowed |
|
| 114 |
-you to bind-mount additional volumes or files inside the container as follows: |
|
| 115 |
- |
|
| 116 |
- $ docker run -it -v /home/user/foo.txt:/foobar.txt:ro <imagename> |
|
| 117 |
- |
|
| 118 |
-In the 1.6.2-cs5 release, you must ensure additional bind-mounts have the correct |
|
| 119 |
-SELinux context. For example, if you want to mount `foobar.txt` as read-only |
|
| 120 |
-into the container, do the following to create and test your bind-mount: |
|
| 121 |
- |
|
| 122 |
-1. Add the `z` option to the bind mount when you specify `docker run`. |
|
| 123 |
- |
|
| 124 |
- $ docker run -it -v /home/user/foo.txt:/foobar.txt:ro,z <imagename> |
|
| 125 |
- |
|
| 126 |
-2. Exec into your new container. |
|
| 127 |
- |
|
| 128 |
- For example, if your container is `bashful_curie`, open a shell on the |
|
| 129 |
- container: |
|
| 130 |
- |
|
| 131 |
- $ docker exec -it bashful_curie bash |
|
| 132 |
- |
|
| 133 |
-3. Use `cat` to check the permissions on the mounted file. |
|
| 134 |
- |
|
| 135 |
- $ cat /foobar.txt |
|
| 136 |
- the contents of foobar appear |
|
| 137 |
- |
|
| 138 |
- If you see the file's contents, your mount succeeded. If you receive a |
|
| 139 |
- `Permission denied` message and/or the `/var/log/audit/audit.log` file on |
|
| 140 |
- your Docker host contains an AVC Denial message, the mount did not succeed. |
|
| 141 |
- |
|
| 142 |
- type=AVC msg=audit(1432145409.197:7570): avc: denied { read } for pid=21167 comm="cat" name="foobar.txt" dev="xvda2" ino=17704136 scontext=system_u:system_r:svirt_lxc_net_t:s0:c909,c965 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file
|
|
| 143 |
- |
|
| 144 |
- Recheck your command line to make sure you passed in the `z` option. |
|
| 145 |
- |
|
| 146 |
- |
|
| 147 |
-### CS Docker Engine 1.6.2-cs4 |
|
| 148 |
-(13 May 2015) |
|
| 149 |
- |
|
| 150 |
-Fix mount regression for `/sys`. |
|
| 151 |
- |
|
| 152 |
-### CS Docker Engine 1.6.1-cs3 |
|
| 153 |
-(11 May 2015) |
|
| 154 |
- |
|
| 155 |
-Docker Engine version 1.6.1 has been released to address several vulnerabilities |
|
| 156 |
-and is immediately available for all supported platforms. Users are advised to |
|
| 157 |
-upgrade existing installations of the Docker Engine and use 1.6.1 for new installations. |
|
| 158 |
- |
|
| 159 |
-It should be noted that each of the vulnerabilities allowing privilege escalation |
|
| 160 |
-may only be exploited by a malicious Dockerfile or image. Users are advised to |
|
| 161 |
-run their own images and/or images built by trusted parties, such as those in |
|
| 162 |
-the official images library. |
|
| 163 |
- |
|
| 164 |
-Please send any questions to security@docker.com. |
|
| 165 |
- |
|
| 166 |
- |
|
| 167 |
-#### **[CVE-2015-3629](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3629) Symlink traversal on container respawn allows local privilege escalation** |
|
| 168 |
- |
|
| 169 |
-Libcontainer version 1.6.0 introduced changes which facilitated a mount namespace |
|
| 170 |
-breakout upon respawn of a container. This allowed malicious images to write |
|
| 171 |
-files to the host system and escape containerization. |
|
| 172 |
- |
|
| 173 |
-Libcontainer and Docker Engine 1.6.1 have been released to address this |
|
| 174 |
-vulnerability. Users running untrusted images are encouraged to upgrade Docker Engine. |
|
| 175 |
- |
|
| 176 |
-Discovered by Tõnis Tiigi. |
|
| 177 |
- |
|
| 178 |
- |
|
| 179 |
-#### **[CVE-2015-3627](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3627) Insecure opening of file-descriptor 1 leading to privilege escalation** |
|
| 180 |
- |
|
| 181 |
-The file-descriptor passed by libcontainer to the pid-1 process of a container |
|
| 182 |
-has been found to be opened prior to performing the chroot, allowing insecure |
|
| 183 |
-open and symlink traversal. This allows malicious container images to trigger |
|
| 184 |
-a local privilege escalation. |
|
| 185 |
- |
|
| 186 |
-Libcontainer and Docker Engine 1.6.1 have been released to address this |
|
| 187 |
-vulnerability. Users running untrusted images are encouraged to upgrade |
|
| 188 |
-Docker Engine. |
|
| 189 |
- |
|
| 190 |
-Discovered by Tõnis Tiigi. |
|
| 191 |
- |
|
| 192 |
-#### **[CVE-2015-3630](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3630) Read/write proc paths allow host modification & information disclosure** |
|
| 193 |
- |
|
| 194 |
-Several paths underneath /proc were writable from containers, allowing global |
|
| 195 |
-system manipulation and configuration. These paths included `/proc/asound`, |
|
| 196 |
-`/proc/timer_stats`, `/proc/latency_stats`, and `/proc/fs`. |
|
| 197 |
- |
|
| 198 |
-By allowing writes to `/proc/fs`, it has been noted that CIFS volumes could be |
|
| 199 |
-forced into a protocol downgrade attack by a root user operating inside of a |
|
| 200 |
-container. Machines having loaded the timer_stats module were vulnerable to |
|
| 201 |
-having this mechanism enabled and consumed by a container. |
|
| 202 |
- |
|
| 203 |
-We are releasing Docker Engine 1.6.1 to address this vulnerability. All |
|
| 204 |
-versions up to 1.6.1 are believed vulnerable. Users running untrusted |
|
| 205 |
-images are encouraged to upgrade. |
|
| 206 |
- |
|
| 207 |
-Discovered by Eric Windisch of the Docker Security Team. |
|
| 208 |
- |
|
| 209 |
-#### **[CVE-2015-3631](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3631) Volume mounts allow LSM profile escalation** |
|
| 210 |
- |
|
| 211 |
-By allowing volumes to override files of `/proc` within a mount namespace, a user |
|
| 212 |
-could specify arbitrary policies for Linux Security Modules, including setting |
|
| 213 |
-an unconfined policy underneath AppArmor, or a `docker_t` policy for processes |
|
| 214 |
-managed by SELinux. In all versions of Docker up until 1.6.1, it is possible for |
|
| 215 |
-malicious images to configure volume mounts such that files of proc may be overridden. |
|
| 216 |
- |
|
| 217 |
-We are releasing Docker Engine 1.6.1 to address this vulnerability. All versions |
|
| 218 |
-up to 1.6.1 are believed vulnerable. Users running untrusted images are encouraged |
|
| 219 |
-to upgrade. |
|
| 220 |
- |
|
| 221 |
-Discovered by Eric Windisch of the Docker Security Team. |
|
| 222 |
- |
|
| 223 |
-#### **AppArmor policy improvements** |
|
| 224 |
- |
|
| 225 |
-The 1.6.1 release also marks preventative additions to the AppArmor policy. |
|
| 226 |
-Recently, several CVEs against the kernel have been reported whereby mount |
|
| 227 |
-namespaces could be circumvented through the use of the sys_mount syscall from |
|
| 228 |
-inside of an unprivileged Docker container. In all reported cases, the |
|
| 229 |
-AppArmor policy included in libcontainer and shipped with Docker has been |
|
| 230 |
-sufficient to deflect these attacks. However, we have deemed it prudent to |
|
| 231 |
-proactively tighten the policy further by outright denying the use of the |
|
| 232 |
-`sys_mount` syscall. |
|
| 233 |
- |
|
| 234 |
-Because this addition is preventative, no CVE-ID is requested. |
|
| 235 |
- |
|
| 236 |
-### CS Docker Engine 1.6.0-cs2 |
|
| 237 |
-(23 Apr 2015) |
|
| 238 |
- |
|
| 239 |
-- First release, please see the [Docker Engine 1.6.0 Release notes](/release-notes/) |
|
| 240 |
- for more details. |
| 241 | 1 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,20 @@ |
| 0 |
+#!/bin/bash -e |
|
| 1 |
+ |
|
| 2 |
+ |
|
| 3 |
+# Sed to process GitHub Markdown |
|
| 4 |
+# 1-2 Remove comment code from metadata block |
|
| 5 |
+# |
|
| 6 |
+for i in ls -l /docs/content/* |
|
| 7 |
+ do # Line breaks are important |
|
| 8 |
+ if [ -d $i ] # Spaces are important |
|
| 9 |
+ then |
|
| 10 |
+ y=${i##*/}
|
|
| 11 |
+ find $i -type f -name "*.md" -exec sed -i.old \ |
|
| 12 |
+ -e '/^<!.*metadata]>/g' \ |
|
| 13 |
+ -e '/^<!.*end-metadata.*>/g' {} \;
|
|
| 14 |
+ fi |
|
| 15 |
+done |
|
| 16 |
+ |
|
| 17 |
+ |
|
| 18 |
+ |
|
| 19 |
+ |
| ... | ... |
@@ -15,7 +15,9 @@ parent = "smn_applied" |
| 15 | 15 |
Docker allows you to run applications inside containers. Running an |
| 16 | 16 |
application inside a container takes a single command: `docker run`. |
| 17 | 17 |
|
| 18 |
-{{ include "no-remote-sudo.md" }}
|
|
| 18 |
+> **Note:** if you are using a remote Docker daemon, such as Boot2Docker, |
|
| 19 |
+> then _do not_ type the `sudo` before the `docker` commands shown in the |
|
| 20 |
+> documentation's examples. |
|
| 19 | 21 |
|
| 20 | 22 |
## Hello world |
| 21 | 23 |
|
| ... | ... |
@@ -1,6 +1,5 @@ |
| 1 | 1 |
<!--[metadata]> |
| 2 | 2 |
+++ |
| 3 |
-draft = true |
|
| 4 | 3 |
title = "The Docker user guide" |
| 5 | 4 |
description = "The Docker user guide home page" |
| 6 | 5 |
keywords = ["docker, introduction, documentation, about, technology, docker.io, user, guide, user's, manual, platform, framework, virtualization, home, intro"] |
| ... | ... |
@@ -1,11 +1,8 @@ |
| 1 | 1 |
<!--[metadata]> |
| 2 | 2 |
+++ |
| 3 |
-draft = true |
|
| 4 | 3 |
title = "Docker images test" |
| 5 | 4 |
description = "How to work with Docker images." |
| 6 | 5 |
keywords = ["documentation, docs, the docker guide, docker guide, docker, docker platform, virtualization framework, docker.io, Docker images, Docker image, image management, Docker repos, Docker repositories, docker, docker tag, docker tags, Docker Hub, collaboration"] |
| 7 |
-[menu.main] |
|
| 8 |
-parent = "identifier" |
|
| 9 | 6 |
+++ |
| 10 | 7 |
<![end-metadata]--> |
| 11 | 8 |
|
| ... | ... |
@@ -1,11 +1,8 @@ |
| 1 | 1 |
<!--[metadata]> |
| 2 | 2 |
+++ |
| 3 |
-draft = true |
|
| 4 | 3 |
title = "Docker images test" |
| 5 | 4 |
description = "How to work with Docker images." |
| 6 | 5 |
keywords = ["documentation, docs, the docker guide, docker guide, docker, docker platform, virtualization framework, docker.io, Docker images, Docker image, image management, Docker repos, Docker repositories, docker, docker tag, docker tags, Docker Hub, collaboration"] |
| 7 |
-[menu.main] |
|
| 8 |
-parent = "identifier" |
|
| 9 | 6 |
+++ |
| 10 | 7 |
<![end-metadata]--> |
| 11 | 8 |
|