5. Docker Schnellstart

Docker
Docker

Docker ist eine Open-Source-Software, die dazu verwendet werden kann, Anwendungen mithilfe von Betriebssystemvirtualisierung in Containern zu isolieren. Dies vereinfacht einerseits die Bereitstellung von Anwendungen, weil sich Container, die alle nötigen Pakete enthalten, leicht als Dateien transportieren und installieren lassen. Andererseits gewährleisten Container die Trennung der auf einem Rechner genutzten Ressourcen, sodass ein Container keinen Zugriff auf Ressourcen anderer Container hat.

Quelle: Wikipedia

Für mich ist Docker eines der innovativsten und produktivsten Softwarewerkzeuge der letzten Jahre. Inzwischen betreibe ich keine Odoo Installation mehr ohne Docker. Damit ist es möglich, unterschiedlichste Odoo Versionen auf einem HOST System zu betreiben.

Nachdem Docker für alle Plattformen verfügbar ist und unser Release Manager einen Reifegrad erreicht hat, in dem alle Optionen wie Installation, Update und Backup abgedeckt und erprobt wurden, empfehlen wir diese Variante.

Docker Architektur
Bildquelle

Inzwischen gibt es auch sehr gute deutschsprachige Docker Dokumentationen und in Fachzeitschriften erscheinen regelmäßig Artikel zu diesem Thema. Docker Anwendungen kann man mit einer App auf einem mobilen Gerät vergleichen. Die Anwendung bringt ihr nötiges Umfeld mit. So kann eine Anwendung auf Debian basieren und eine zweite benutzt Ubuntu mit Tomcat. Die Anwendungen laufen in einer “Sandbox” und können erst einmal nicht mit der Außenwelt kommunizieren. Man muss ihr die Schnittstelle freigeben. Ähnlich ist es auch bei mobilen Apps. Diese können mit unterschiedlichen Programmiersprachen entwickelt worden sein und man muss ihr den Zugriff auf Kamera, Adressbuch etc. erlauben.

Pro Docker Image sollte nur eine Anwendung laufen. Es gibt zwar gegenteilige Beispiele, aber man sollte darauf achten!

Aber zunächst müssen wir erst einmal Docker auf unserer präferierten Plattform installieren. In der Vergangenheit haben viele Windows Anwender Odoo unter Windows installiert. Allerdings ist diese Installation nicht so performant wie die Linux-Variante. Das lag nicht zuletzt daran, dass gewisse Vorbehalte gegen die Nutzung einer Shell bestehen.

5.1 Docker unter Windows installieren

Docker Windows - Homepage Docker
Docker Windows - Homepage Docker

Unter https://store.docker.com/editions/community/docker-ce-desktop-windows können Sie die aktuelle Version von Docker für Windows herunterladen.

Docker Windows - Setup
Docker Windows - Setup
Docker Windows - Konfiguration
Docker Windows - Konfiguration
Docker Windows - Hyper-V
Docker Windows - Hyper-V
Docker Windows - Hyper-V aktivieren
Docker Windows - Hyper-V aktivieren
Docker Windows - Installation
Docker Windows - Installation
Docker Windows - Installation abgeschlossen
Docker Windows - Installation abgeschlossen
Docker Windows - Start
Docker Windows - Start

Nach erfolgreichem Start erscheint folgendes “Welcome” Fenster.

Docker Windows - Start
Docker Windows - Start
Docker Windows - Start
Docker Windows - Start
Docker Windows - Start
Docker Windows - Start

5.2 Docker unter macOS installieren

Unter https://store.docker.com/editions/community/docker-ce-desktop-mac können Sie die aktuelle Version von Docker für macOS herunterladen.

Docker macOS - Website Docker macOS
Docker macOS - Website Docker macOS
Docker macOS - Docker App Drag & Drop
Docker macOS - Docker App Drag & Drop
Docker macOS - Welcome
Docker macOS - Welcome
Docker macOS - Rechte anfragen
Docker macOS - Rechte anfragen
Docker macOS - Freigabe
Docker macOS - Freigabe
Docker macOS - Docker Start
Docker macOS - Docker Start
Docker macOS - Steuerung
Docker macOS - Steuerung
Docker macOS - Einstellungen
Docker macOS - Einstellungen

5.3 Docker unter Linux Ubuntu 16.04/1804 installieren

5.3.1 Linux-Grundpakete

Grundpakete installieren
$ sudo apt-get update
$ sudo apt-get install htop zip unzip mc curl wget needrestart dnsutils sudo curl \
        apt-transport-https git python ntp gnupg2 \
        software-properties-common ca-certificates ufw locate tzdata && \
        ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime

5.3.2 Docker Quelle ergänzen: Ubuntu 16.04.x/18.04.x

Docker unter Ubuntu
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 
..

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
..
Hit:1 http://archive.ubuntu.com/ubuntu bionic InRelease
Get:2 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [65.4 kB]
Hit:3 http://security.ubuntu.com/ubuntu bionic-security InRelease
Get:4 https://download.docker.com/linux/ubuntu bionic InRelease [64.4 kB]
Hit:5 http://archive.ubuntu.com/ubuntu bionic-backports InRelease
Fetched 130 kB in 0s (293 kB/s)
Reading package lists... Done
..

5.3.3 Docker installieren

Docker installieren
$ sudo apt-get update
$ sudo apt-get install docker-ce

5.4 PostgreSQL Container starten

Zunächst starten wird die PostgreSQL-Datenbank in einem Docker Container:

docker run -d --restart=always -v pg-data:/var/lib/postgresql/data/ -e POSTGRES_USER=myodoo -e POSTGRES_PASSWORD=myodoo --name "myodoo-db" postgres:9.6.9

Docker - Postgres Container laden und starten
Docker - Postgres Container laden und starten
PostgreSQL als Docker Container starten
Start
$ docker run -d --restart=always -v pg-data:/var/lib/postgresql/data/ \
         -e POSTGRES_USER=myodoo -e POSTGRES_PASSWORD=myodoo \
         --name "myodoo-db" postgres:9.6.9
  
bash Zugriff
$ docker exec -ti "myodoo-db" env COLUMNS=$COLUMNS LINES=$LINES TERM=$TERM  bash -l
  
Aktualisieren
$ docker pull postgres:9.6.x

Zum Überprüfen können Sie mittels dem Kommando docker ps -a die laufenden Container überprüfen.

Docker - Postgres läuft
Docker - Postgres läuft

5.5 MyOdoo Container starten

Wir stellen die öffentliche Version unter https://hub.docker.com/r/myodoo/myodoo-10-public/ zur Verfügung.

Docker - MyOdoo im Docker Hub
Docker - MyOdoo im Docker Hub
Docker - MyOdoo Tags
Docker - MyOdoo Tags

Jetzt starten wir den MyOdoo Container. Zunächst wird das Image auch heruntergeladen.

docker run -d --restart=always -p 10069:8069 -p 10072:8072 --name="public-myodoo10" -v myodoodata:/opt/odoo/data --link myodoo-db:db myodoo/myodoo-10-public:180527 start

Docker - Download und Start MyOdoo 10 Image
Docker - Download und Start MyOdoo 10 Image
Docker - IP Adresse herausfinden
Docker - IP Adresse herausfinden
Docker - Aufruf MyOdoo Datenbank Manager
Docker - Aufruf MyOdoo Datenbank Manager

Jetzt sollten Sie den Datenbank Manager sehen. Das Masterpasswort ist “myodoo2018”.

Diese können Sie jederzeit ändern. Sie können jetzt zu Erste Schritte wechseln.

MyOdoo als Docker Container starten
Start
$ docker run -d --restart=always -p 10069:8069 -p 10072:8072 \
         --name="public-myodoo10" \
         --link myodoo-db:db  myodoo/myodoo-10-public:180527 start
 
Filestore auf Host mounten
$ docker run -d --restart=always -p 10069:8069 -p 10072:8072 \
         --name="public-myodoo10" -v  myodoodata:/opt/odoo/data \
         --link myodoo-db:db  myodoo/myodoo-10-public:180527 start
 
# Update
$ docker run -d --restart=always -p 10069:8069 -p 10072:8072 \
         --name="public-myodoo10" -v  myodoodata:/opt/odoo/data \
         --link myodoo-db:db  myodoo/myodoo-10-public:180527 \
         update --database=test --db_user=myodoo --db_password=myodoo --db_host=db

Sie können jetzt zu Erste Schritte wechseln.

5.6 Die wichtigsten Docker Befehle

5.6.1 Container auflisten

docker ps -a

5.6.2 Images auflisten

docker images

5.6.3 Container stoppen

docker stop public-myodoo10 bzw. docker stop myodoo-db

5.6.4 Container starten

docker start public-myodoo10 bzw. docker start myodoo-db

5.6.5 Container restarten

docker restart public-myodoo10 bzw. docker restart myodoo-db

5.6.6 Container löschen

docker rm public-myodoo10 bzw. docker rm myodoo-db

5.6.7 Image löschen

Docker - Container & Images
Docker - Container & Images

docker rmi myodoo/myodoo-10-public:180527 bzw. docker rmi postgres:9.6.9

5.6.8 Container bereinigen

docker container prune

5.6.9 Volumen bereinigen

docker volumen prune

5.6.10 Images bereinigen

docker image prune

5.7 Kitematic

Unter Windows oder macOS können Sie das Zusatzprogramm Kitematic installieren.

Docker - Kitematic
Docker - Kitematic

Dann werden Sie zu einem Download-Link verwiesen.

Docker - Kitematic Download
Docker - Kitematic Download

Nach dem Download packen Sie das Archiv aus und starten Sie die Kitematic Anwendung.

Docker - Kitematic auspacken & starten
Docker - Kitematic auspacken & starten

Jetzt können Sie komfortabel auf die Container, Volumen oder Images zugreifen.

Docker - Kitematic Oberfläche
Docker - Kitematic Oberfläche

5.8 Einsatz unter Synology

Zunächst müssen Sie überprüfen, ob Ihr Synology Docker unterstützt. Information hierzu finden Sie unter https://www.synology.com/de-de/dsm/app_packages/Docker

Docker - Synology Docker App
Docker - Synology Docker App

Installieren Sie jetzt die Docker App auf Ihrem Synology und starten Sie diese danach:

Docker - Synology App Start
Docker - Synology App Start

Jetzt müssen wir zunächst die passenden Images (Abbilder) vom Docker Hub laden.

5.8.1 Postgres installieren

Dazu geben Sie unter Registrierung den Suchbegriff “postgres” und klicken danach auf das Originalabbild. Danach können Sie den “Tag” auswählen.

Docker - Synology PostgreSQL Tag wählen
Docker - Synology PostgreSQL Tag wählen
Docker - Synology PostgreSQL Abbild (Image)
Docker - Synology PostgreSQL Abbild (Image)

Das Abbild wird jetzt aus dem Internet heruntergeladen. Danach können Sie unter Abbild einen Doppelklick darauf machen.

Docker - Synology PostgreSQL Container Name
Docker - Synology PostgreSQL Container Name

Geben Sie dem Container den Namen “myodoo-db” und klicken dann auf “Erweiterte Einstellungen”.

Docker - Synology PostgreSQL Variablen unter Umwelt
Docker - Synology PostgreSQL Variablen unter Umwelt
Docker - Synology PostgreSQL Zusammenfassung
Docker - Synology PostgreSQL Zusammenfassung

5.8.2 MyOdoo installieren

Jetzt laden wir den aktuellen “Tag” von MyOdoo. Unsere Tags wie mit Jahr/Monat/Build gekennzeichnet, z.B. 180527 für den Build aus dem Mai 2018. Wir aktualisieren diese Tags regelmäßig.

Docker - Synology MyOdoo Image wählen
Docker - Synology MyOdoo Image wählen

Ist das Abbild geladen, können wir darauf einen Container erstellen.

Docker - Synology MyOdoo Container konfigurieren
Docker - Synology MyOdoo Container konfigurieren

Sie geben dem Container den Namen “myodoo-10” und wechseln dann zu den “Erweiterten Einstellungen”.

Docker - Synology Volumen Ordner Hinzufügen
Docker - Synology Volumen Ordner Hinzufügen

Dazu wählen wir unter Volumen die Option “Ordner hinzufügen”

Docker - Synology Ordner wählen
Docker - Synology Ordner wählen

Durch die Installation der Docker App wurde der Ordner “docker” angelegt. Sie dürfen nur diesen oder einen Unterordner darin verwenden, da Ihr Container sonst keine Schreibrechte hat.

Docker - Synology Volumen Zusammenfassung
Docker - Synology Volumen Zusammenfassung

Als “Mount-Pfad” müssen Sie “/opt/odoo/data” angeben.

Docker - Synology MyOdoo Links zum PostgreSQL Container setzen
Docker - Synology MyOdoo Links zum PostgreSQL Container setzen

Unter “Links” stellen wir jetzt eine Verbindung zum Datenbank Container her.

Docker - Synology MyOdoo Variablen
Docker - Synology MyOdoo Variablen
Docker - Synology MyOdoo Port
Docker - Synology MyOdoo Port

Sie können den Port unter dem Ihr MyOdoo System über den Browser erreichbar sein wird vorgeben oder den Port von der Synology automatisch vergeben lassen.

Docker - Synology MyOdoo Zusammenfassung
Docker - Synology MyOdoo Zusammenfassung

Hier noch mal die Zusammenfassung aller Parameter.

Docker - Synology MyOdoo Zusammenfassung Fortsetzung
Docker - Synology MyOdoo Zusammenfassung Fortsetzung

Danach können Sie “Übernehmen” und starten dann Ihr MyOdoo-System.

5.8.3 MyOdoo Container erster Start

Docker - Synology Container im Überblick
Docker - Synology Container im Überblick

Wechseln Sie jetzt in den Browser und geben Sie die IP-Adresse Ihres Synology´s ein sowie den Port den Sie oder das Synology vergeben haben.

Docker - Synology MyOdoo Container Details
Docker - Synology MyOdoo Container Details

Unter Details können Sie diesen ablesen.

Docker - Synology MyOdoo Datenbank Manager
Docker - Synology MyOdoo Datenbank Manager

Jetzt sollten Sie den Datenbank Manager sehen. Das Masterpasswort ist “myodoo2018”.

Dieses können Sie jederzeit ändern.

Docker - Synology Prozess überprüfen
Docker - Synology Prozess überprüfen

Falls das System nicht läuft, überprüfen Sie den Reiter “Prozess” und “Protokoll”

Docker - Synology Protokoll
Docker - Synology Protokoll

Diese sollten wie abgebildet aussehen.

5.8.4 Das Filestore

Docker - Synology Filestore
Docker - Synology Filestore

Der Container hat jetzt im Docker Ordner die Ordner “addons”, “filestore” und “sessions” abgelegt.

Docker - Synology Filestore
Docker - Synology Filestore

Unter “filestore” finden Sie die Dateien Ihres Systems im Ordner mit dem Namen der Datenbank als “base64”-codierte Ordner/Dateien.

5.8.5 Zusätzliche Module installieren

Docker - Synology Module hinzufügen
Docker - Synology Module hinzufügen

Falls Sie zusätzliche Module verwenden wollen, können Sie diese unter “addons/x/” ablegen.

Docker - Synology Module aktualisieren
Docker - Synology Module aktualisieren

5.8.6 MyOdoo updaten

Wenn es eine neue Version des MyOdoo Image zur Verfügung steht, reicht es keineswegs nur das Image/Abbild zu tauschen.

Sie müssen Ihre Datenbank aktualisieren.

Dazu müssen Sie den bestehenden Container entfernen und mit dem neuen Abbild einen neuen Container wie oben beschrieben erzeugen.

Der Postgres-Container bleibt dabei unberührt.

Wenn der neue Container läuft, rufen Sie vor dem ersten Anmelden unter “Terminal” eine “bash” durch den Button “Erstellen” auf.

MyOdoo 10 als Docker updaten
sudo -i -u odoo \
    /opt/odoo/odoo-server/odoo-bin \
    --update=all \
    --workers=0 \
    --no-xmlrpc \
    --database=dbname \
    --db_user=myodoo \
    --db_password=myodoo \
    --db_host=db \
    --stop-after-init

Sie können jetzt zu Erste Schritte wechseln.