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 7bdb73e86..000000000 Binary files a/dashboard.png and /dev/null differ 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