Was ist Rancher

Rancher ist eine Open Source Software welche die Verwaltung und Bereitstellung von Docker Container vereinfacht. Über eine übersichtliche, webbasierte Benutzeroberfläche können Hosts, Container, Speicher, Zertifikate und Registries verwaltet und skaliert werden.

Installation von Rancher

Für die Installation von Rancher nutze ich Docker-Compose, was mir eine einfach Installation und gute Wartbarkeit ermöglicht.

Reverse-Proxy und Let’s Encrypt

Sicherheit ist bei einem webbasiertem System wie Rancher ein ganz wichtiges Thema und die Kommunikation über SSL absolut Pflicht. Um dies zu ermöglichen setze ich einen Reverse-Proxy vor dem Rancher-Container ein welcher die gesamte Kommunikation kanalisiert und ein weiterer Container welcher die SSL-Zertifikate von Let's Encrypt managed.

docker-compose.yaml

Wird Docker-Compose eingesetzt, kann die Konfiguration und das Verhalten der nötigen Container in einem einzigen Dokument zusammengefasst werden. Das Dokument heisst docker-compose.yaml und sieht bei mir wie folgt aus:

version: '2'
services:
  nginx:
    restart: always
    image: jwilder/nginx-proxy
    container_name: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./volumes/proxy/conf.d:/etc/nginx/conf.d
      - ./volumes/proxy/vhost.d:/etc/nginx/vhost.d
      - ./volumes/proxy/html:/usr/share/nginx/html
      - ./volumes/proxy/certs:/etc/nginx/certs:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro

  letsencrypt-nginx-proxy-companion:
    restart: always
    image: alastaircoote/docker-letsencrypt-nginx-proxy-companion
    container_name: letsencrypt-companion
    depends_on: [nginx]
    volumes_from:
      - nginx
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./volumes/proxy/certs:/etc/nginx/certs:rw

  rancher-server:
    restart: always
    image: rancher/server
    container_name: rancher-server
    environment:
      LETSENCRYPT_EMAIL: letsencrypt@mydomain.tld
      LETSENCRYPT_HOST: rancher.mydomain.tld
      VIRTUAL_HOST: rancher.mydomain.tld
      VIRTUAL_PORT: '8080'
    labels:
      io.rancher.container.pull_image: always
      io.rancher.scheduler.affinity:host_label_soft: rancher.mydomain.tld
    volumes:
      - ./volumes/rancher-server/mysql:/var/lib/mysql:rw

Installation / Starten von Rancher

Ist Docker-Compose installiert kann über die Kommandozeile folgender Befehl eingegeben werden um alle Container zu installieren und zu starten:

docker-compose up -d