From b8e420e0e8de139a3827b2c9637baaf114c7fa2b Mon Sep 17 00:00:00 2001 From: Anthony Lapenna Date: Sat, 24 Sep 2016 22:31:37 +1200 Subject: [PATCH] docs(project): new documentation (#229) --- .gitignore | 6 - Procfile | 1 - README.md | 162 +++++-------------- dashboard.png | Bin 56985 -> 0 bytes examples/nginx-basic-auth/Dockerfile | 4 - examples/nginx-basic-auth/default.conf | 17 -- examples/nginx-basic-auth/docker-compose.yml | 10 -- examples/nginx-basic-auth/users.htpasswd | 1 - 8 files changed, 39 insertions(+), 162 deletions(-) delete mode 100644 Procfile delete mode 100644 dashboard.png delete mode 100644 examples/nginx-basic-auth/Dockerfile delete mode 100644 examples/nginx-basic-auth/default.conf delete mode 100644 examples/nginx-basic-auth/docker-compose.yml delete mode 100644 examples/nginx-basic-auth/users.htpasswd diff --git a/.gitignore b/.gitignore index 6760c7934..61fe02d69 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,4 @@ -logs/* -!.gitkeep -*.esproj/* node_modules bower_components -.idea -*.iml dist -dist/* portainer-checksum.txt diff --git a/Procfile b/Procfile deleted file mode 100644 index 1390d66ed..000000000 --- a/Procfile +++ /dev/null @@ -1 +0,0 @@ -web: portainer -p ":$PORT" -e "$DOCKER_ENDPOINT" diff --git a/README.md b/README.md index 832a2090a..8f5258c51 100644 --- a/README.md +++ b/README.md @@ -1,165 +1,81 @@ # Portainer +The easiest way to manage Docker. + [![Microbadger](https://images.microbadger.com/badges/image/portainer/portainer.svg)](http://microbadger.com/images/portainer/portainer "Image size") [![Gitter](https://badges.gitter.im/portainer/Lobby.svg)](https://gitter.im/portainer/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -Portainer is a web interface for the Docker remote API. +Portainer is a lightweight management UI which allows you to **easily** manage your Docker host or Swarm cluster. -![Dashboard](/dashboard.png) +# Usage -## Supported Docker versions +It's really simple to deploy it using Docker: -The following Docker versions are supported: - -* full support for Docker 1.10, 1.11 and 1.12 -* partial support for Docker 1.9 (some features won't be available) - -## Run - -### Quickstart - -1. Run: `docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer` - -2. Open your browser to `http://:9000` - -Bind mounting the Unix socket into the Portainer container is much more secure than exposing your docker daemon over TCP. - -The `--privileged` flag is required for hosts using SELinux. - -### Specify socket to connect to Docker daemon - -By default Portainer connects to the Docker daemon with`/var/run/docker.sock`. For this to work you need to bind mount the unix socket into the container with `-v /var/run/docker.sock:/var/run/docker.sock`. - -You can use the `--host`, `-H` flags to change this socket: - -``` -# Connect to a tcp socket: -$ docker run -d -p 9000:9000 portainer/portainer -H tcp://127.0.0.1:2375 +```shell +$ docker run -d -p 9000:9000 portainer/portainer -H tcp://: ``` -``` -# Connect to another unix socket: -$ docker run -d -p 9000:9000 portainer/portainer -H unix:///path/to/docker.sock -``` +Just point it at your targeted Docker host and then access Portainer by hitting [http://localhost:9000](http://localhost:9000) with a web browser. -### Swarm support +If your target is a Docker Swarm cluster or a Docker cluster using *swarm mode*, just add the flag `--swarm`: -**Supported Swarm version: 1.2.3** - -You can access a specific view for you Swarm cluster by defining the `--swarm` flag: - -``` -# Connect to a tcp socket and enable Swarm: +```shell $ docker run -d -p 9000:9000 portainer/portainer -H tcp://: --swarm ``` -*NOTE*: Due to Swarm not exposing information in a machine readable way, the app is bound to a specific version of Swarm at the moment. +If you don't specify any target, its default behaviour is to use a bind mount on the Docker socket so you can easily deploy it to manage your local Docker host: -### Change address/port Portainer is served on -Portainer listens on port 9000 by default. If you run Portainer inside a container then you can bind the container's internal port to any external address and port: - -``` -# Expose Portainer on 10.20.30.1:80 -$ docker run -d -p 10.20.30.1:80:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer +```shell +$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer ``` -### Access a Docker engine protected via TLS +Have a look at our [wiki](https://github.com/portainer/portainer/wiki/Deployment) for more deployment options. -Ensure that you have access to the CA, the cert and the public key used to access your Docker engine. +# Configuration -These files will need to be named `ca.pem`, `cert.pem` and `key.pem` respectively. Store them somewhere on your disk and mount a volume containing these files inside the UI container: +Portainer is easy to tune using CLI flags. -``` -$ docker run -d -p 9000:9000 portainer/portainer -v /path/to/certs:/certs -H https://my-docker-host.domain:2376 --tlsverify -``` +## Hiding specific containers -You can also use the `--tlscacert`, `--tlscert` and `--tlskey` flags if you want to change the default path to the CA, certificate and key file respectively: - -``` -$ docker run -d -p 9000:9000 portainer/portainer -v /path/to/certs:/certs -H https://my-docker-host.domain:2376 --tlsverify --tlscacert /certs/myCa.pem --tlscert /certs/myCert.pem --tlskey /certs/myKey.pem -``` - -*Note*: Replace `/path/to/certs` to the path to the certificate files on your disk. - -### Use your own logo - -You can use the `--logo` flag to specify an URL to your own logo. - -For example, using the Docker logo: - -``` -$ docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer --logo "https://www.docker.com/sites/all/themes/docker/assets/images/brand-full.svg" -``` - -The custom logo will replace the Portainer logo in the UI. - -### Hide containers with specific labels - -You can hide specific containers in the containers view by using the `--hide-label` or `-l` options and specifying a label. +Portainer allows you to hide container with a specific label by using the `-l` flag. For example, take a container started with the label `owner=acme`: - -``` +```shell $ docker run -d --label owner=acme nginx ``` -You can hide it in the view by starting the ui with: - -``` -$ docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer -l owner=acme +Simply add the `-l owner=acme` option on the CLI when starting Portainer: +```shell +$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer -l owner=acme ``` -### Reverse proxy configuration +## Use your own templates -Has been tested with Nginx 1.11. +Portainer allows you to rapidly deploy containers using `App Templates`. -Use the following configuration to host the UI at `myhost.mydomain.com/portainer`: +By default [Portainer templates](https://raw.githubusercontent.com/portainer/templates/master/templates.json) will be used but you can also define your own templates. -```nginx -upstream portainer { - server ADDRESS:PORT; -} +Add the `--templates` flag and specify the external location of your templates when starting Portainer: -server { - listen 80; - - location /portainer/ { - proxy_http_version 1.1; - proxy_set_header Connection ""; - proxy_pass http://portainer/; - } - location /portainer/ws/ { - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_http_version 1.1; - proxy_pass http://portainer/ws/; - } -} +```shell +$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer --templates http://my-host.my-domain/templates.json ``` -Replace `ADDRESS:PORT` with the Portainer container details. +For more information about hosting your own template definitions and the format, see: https://github.com/portainer/templates -### Host your own apps +Have a look at our [wiki](https://github.com/portainer/portainer/wiki/Configuration) for more configuration options. -You can specify an URL to your own templates (**Apps**) definitions using the `--templates` or `-t` flags. +# FAQ -By default, the following templates will be used (https://raw.githubusercontent.com/portainer/templates/master/templates.json). +Be sure to check our [FAQ](https://github.com/portainer/portainer/wiki/FAQ) if you are missing some information. -For more information about hosting your own template definition and the format, see: https://github.com/portainer/templates +# Limitations -### Available options +Portainer has full support for the following Docker versions: -The following options are available for the `portainer` binary: +* Docker 1.10 to Docker 1.12 (including `swarm-mode`) +* Docker Swarm >= 1.2.3 -* `--host`, `-H`: Docker daemon endpoint (default: `"unix:///var/run/docker.sock"`) -* `--bind`, `-p`: Address and port to serve Portainer (default: `":9000"`) -* `--data`, `-d`: Path to the data folder (default: `"."`) -* `--assets`, `-a`: Path to the assets (default: `"."`) -* `--swarm`, `-s`: Swarm cluster support (default: `false`) -* `--tlsverify`: TLS support (default: `false`) -* `--tlscacert`: Path to the CA (default `/certs/ca.pem`) -* `--tlscert`: Path to the TLS certificate file (default `/certs/cert.pem`) -* `--tlskey`: Path to the TLS key (default `/certs/key.pem`) -* `--hide-label`, `-l`: Hide containers with a specific label in the UI -* `--logo`: URL to a picture to be displayed as a logo in the UI -* `--templates`, `-t`: URL to templates (apps) definitions +Partial support for the following Docker versions (some features may not be available): + +* Docker 1.9 diff --git a/dashboard.png b/dashboard.png deleted file mode 100644 index 7bdb73e86586282e89886c8a87c9d421d269c810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56985 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≀r7O)QlB#6<25Ylp+(4tNGC6B0 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 Kb6Mw<&;$V3ueY-R diff --git a/examples/nginx-basic-auth/Dockerfile b/examples/nginx-basic-auth/Dockerfile deleted file mode 100644 index 505a3951c..000000000 --- a/examples/nginx-basic-auth/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM nginx:latest - -COPY default.conf /etc/nginx/conf.d/default.conf -COPY users.htpasswd /etc/nginx/users.htpasswd diff --git a/examples/nginx-basic-auth/default.conf b/examples/nginx-basic-auth/default.conf deleted file mode 100644 index c39a2db16..000000000 --- a/examples/nginx-basic-auth/default.conf +++ /dev/null @@ -1,17 +0,0 @@ -upstream portainer { - server portainer:9000; -} - -server { - listen 80; - server_name localhost; - - location / { - auth_basic "Docker UI"; - auth_basic_user_file /etc/nginx/users.htpasswd; - - proxy_http_version 1.1; - proxy_set_header Connection ""; - proxy_pass http://portainer; - } -} diff --git a/examples/nginx-basic-auth/docker-compose.yml b/examples/nginx-basic-auth/docker-compose.yml deleted file mode 100644 index b2f71231e..000000000 --- a/examples/nginx-basic-auth/docker-compose.yml +++ /dev/null @@ -1,10 +0,0 @@ -portainer: - image: portainer/portainer - command: -e http://: - -nginx: - build: . - links: - - portainer - ports: - - 80:80 diff --git a/examples/nginx-basic-auth/users.htpasswd b/examples/nginx-basic-auth/users.htpasswd deleted file mode 100644 index 37d4fa4e5..000000000 --- a/examples/nginx-basic-auth/users.htpasswd +++ /dev/null @@ -1 +0,0 @@ -user:{PLAIN}password