2016-09-04 02:50:37 +00:00
# Portainer
2013-06-09 00:12:14 +00:00
2016-09-04 02:53:01 +00:00
Portainer is a web interface for the Docker remote API.
2013-06-09 00:12:14 +00:00
2016-06-02 06:09:18 +00:00
![Dashboard ](/dashboard.png )
2013-06-09 00:12:14 +00:00
2016-07-13 02:47:24 +00:00
## Supported Docker versions
2016-09-04 00:04:42 +00:00
The following Docker versions are supported:
2016-07-13 02:47:24 +00:00
2016-09-04 00:04:42 +00:00
* full support for Docker 1.10, 1.11 and 1.12
* partial support for Docker 1.9 (some features won't be available)
2016-07-13 02:47:24 +00:00
2016-06-23 22:22:04 +00:00
## Run
2016-06-02 06:09:18 +00:00
### Quickstart
2016-06-23 22:22:04 +00:00
2016-09-04 02:50:37 +00:00
1. Run: `docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock cloudinovasi/portainer`
2013-06-09 00:12:14 +00:00
2016-04-30 02:57:27 +00:00
2. Open your browser to `http://<dockerd host ip>:9000`
2013-06-23 18:17:52 +00:00
2016-09-04 02:50:37 +00:00
Bind mounting the Unix socket into the Portainer container is much more secure than exposing your docker daemon over TCP.
2016-04-30 02:57:27 +00:00
2016-06-02 06:09:18 +00:00
The `--privileged` flag is required for hosts using SELinux.
2013-06-09 00:12:14 +00:00
2014-12-30 19:42:54 +00:00
### Specify socket to connect to Docker daemon
2013-12-30 18:40:08 +00:00
2016-09-04 02:50:37 +00:00
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` .
2014-12-30 19:42:54 +00:00
2016-07-13 00:42:20 +00:00
You can use the `--host` , `-H` flags to change this socket:
2014-12-30 19:42:54 +00:00
2016-06-23 22:22:04 +00:00
```
# Connect to a tcp socket:
2016-09-04 02:50:37 +00:00
$ docker run -d -p 9000:9000 cloudinovasi/portainer -H tcp://127.0.0.1:2375
2016-07-13 00:42:20 +00:00
```
```
# Connect to another unix socket:
2016-09-04 02:50:37 +00:00
$ docker run -d -p 9000:9000 cloudinovasi/portainer -H unix:///path/to/docker.sock
2016-06-23 22:22:04 +00:00
```
2014-12-30 19:42:54 +00:00
2016-06-16 05:39:59 +00:00
### Swarm support
2016-06-23 22:11:25 +00:00
**Supported Swarm version: 1.2.3**
2016-06-29 09:08:36 +00:00
You can access a specific view for you Swarm cluster by defining the `--swarm` flag:
2016-06-16 05:39:59 +00:00
2016-06-23 22:22:04 +00:00
```
# Connect to a tcp socket and enable Swarm:
2016-09-04 02:50:37 +00:00
$ docker run -d -p 9000:9000 cloudinovasi/portainer -H tcp://< SWARM_HOST > :< SWARM_PORT > --swarm
2016-06-23 22:22:04 +00:00
```
2016-06-16 05:39:59 +00:00
2016-06-23 22:11:25 +00:00
*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.
2016-06-16 05:39:59 +00:00
2016-09-04 02:50:37 +00:00
### 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:
2014-12-30 19:42:54 +00:00
2016-06-23 22:22:04 +00:00
```
2016-09-04 02:50:37 +00:00
# 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 cloudinovasi/portainer
2016-06-23 22:22:04 +00:00
```
2016-06-23 22:11:49 +00:00
2016-07-12 08:31:11 +00:00
### Access a Docker engine protected via TLS
Ensure that you have access to the CA, the cert and the public key used to access your Docker engine.
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:
```
2016-09-04 02:50:37 +00:00
$ docker run -d -p 9000:9000 cloudinovasi/portainer -v /path/to/certs:/certs -H https://my-docker-host.domain:2376 --tlsverify
2016-07-13 00:42:20 +00:00
```
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:
```
2016-09-04 02:50:37 +00:00
$ docker run -d -p 9000:9000 cloudinovasi/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
2016-07-12 08:31:11 +00:00
```
*Note*: Replace `/path/to/certs` to the path to the certificate files on your disk.
2016-08-17 09:52:49 +00:00
### Use your own logo
You can use the `--logo` flag to specify an URL to your own logo.
For example, using the Docker logo:
```
2016-09-04 02:50:37 +00:00
$ docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock cloudinovasi/portainer --logo "https://www.docker.com/sites/all/themes/docker/assets/images/brand-full.svg"
2016-08-17 09:52:49 +00:00
```
2016-09-04 02:50:37 +00:00
The custom logo will replace the Portainer logo in the UI.
2016-08-17 09:52:49 +00:00
2016-06-23 22:22:04 +00:00
### Hide containers with specific labels
2016-06-23 22:11:49 +00:00
2016-07-08 03:31:09 +00:00
You can hide specific containers in the containers view by using the `--hide-label` or `-l` options and specifying a label.
2016-06-23 22:11:49 +00:00
For example, take a container started with the label `owner=acme` :
```
$ docker run -d --label owner=acme nginx
```
You can hide it in the view by starting the ui with:
```
2016-09-04 02:50:37 +00:00
$ docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock cloudinovasi/portainer -l owner=acme
2016-06-23 22:11:49 +00:00
```
2016-06-23 22:22:04 +00:00
2016-08-17 06:31:23 +00:00
### Reverse proxy configuration
Has been tested with Nginx 1.11.
2016-09-04 02:50:37 +00:00
Use the following configuration to host the UI at `myhost.mydomain.com/portainer` :
2016-08-17 06:31:23 +00:00
```nginx
2016-09-04 02:50:37 +00:00
upstream portainer {
2016-08-17 06:31:23 +00:00
server ADDRESS:PORT;
}
server {
listen 80;
2016-09-04 02:50:37 +00:00
location /portainer/ {
2016-08-17 06:31:23 +00:00
proxy_http_version 1.1;
proxy_set_header Connection "";
2016-09-04 02:50:37 +00:00
proxy_pass http://portainer/;
2016-08-17 06:31:23 +00:00
}
2016-09-04 02:50:37 +00:00
location /portainer/ws/ {
2016-08-17 06:31:23 +00:00
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
2016-09-04 02:50:37 +00:00
proxy_pass http://portainer/ws/;
2016-08-17 06:31:23 +00:00
}
}
```
2016-09-04 02:50:37 +00:00
Replace `ADDRESS:PORT` with the Portainer container details.
2016-08-17 06:31:23 +00:00
2016-08-23 06:09:14 +00:00
### Host your own apps
You can specify an URL to your own templates (**Apps**) definitions using the `--templates` or `-t` flags.
By default, CloudInovasi templates will be used (https://raw.githubusercontent.com/cloud-inovasi/ui-templates/master/templates.json).
For more information about hosting your own template definition and the format, see: https://github.com/cloud-inovasi/ui-templates
2016-06-23 22:22:04 +00:00
### Available options
2016-09-04 02:50:37 +00:00
The following options are available for the `portainer` binary:
2016-06-23 22:22:04 +00:00
2016-07-13 00:42:20 +00:00
* `--host` , `-H` : Docker daemon endpoint (default: `"unix:///var/run/docker.sock"` )
2016-09-04 02:50:37 +00:00
* `--bind` , `-p` : Address and port to serve Portainer (default: `":9000"` )
2016-07-13 00:42:20 +00:00
* `--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` )
2016-07-13 01:43:58 +00:00
* `--hide-label` , `-l` : Hide containers with a specific label in the UI
2016-08-10 06:37:25 +00:00
* `--logo` : URL to a picture to be displayed as a logo in the UI
2016-08-23 06:09:14 +00:00
* `--templates` , `-t` : URL to templates (apps) definitions