5. Docker Schnellstart
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.
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
Unter https://store.docker.com/editions/community/docker-ce-desktop-windows können Sie die aktuelle Version von Docker für Windows herunterladen.
Nach erfolgreichem Start erscheint folgendes “Welcome” Fenster.
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.
5.3 Docker unter Linux Ubuntu 16.04/1804 installieren
5.3.1 Linux-Grundpakete
$ 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
$ 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
$ 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
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.
5.5 MyOdoo Container starten
Wir stellen die öffentliche Version unter https://hub.docker.com/r/myodoo/myodoo-10-public/ zur Verfügung.
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
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.
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 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.
Dann werden Sie zu einem Download-Link verwiesen.
Nach dem Download packen Sie das Archiv aus und starten Sie die Kitematic Anwendung.
Jetzt können Sie komfortabel auf die Container, Volumen oder Images zugreifen.
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
Installieren Sie jetzt die Docker App auf Ihrem Synology und starten Sie diese danach:
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.
Das Abbild wird jetzt aus dem Internet heruntergeladen. Danach können Sie unter Abbild einen Doppelklick darauf machen.
Geben Sie dem Container den Namen “myodoo-db” und klicken dann auf “Erweiterte Einstellungen”.
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.
Ist das Abbild geladen, können wir darauf einen Container erstellen.
Sie geben dem Container den Namen “myodoo-10” und wechseln dann zu den “Erweiterten Einstellungen”.
Dazu wählen wir unter Volumen die Option “Ordner hinzufügen”
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.
Als “Mount-Pfad” müssen Sie “/opt/odoo/data” angeben.
Unter “Links” stellen wir jetzt eine Verbindung zum Datenbank Container her.
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.
Hier noch mal die Zusammenfassung aller Parameter.
Danach können Sie “Übernehmen” und starten dann Ihr MyOdoo-System.
5.8.3 MyOdoo Container erster Start
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.
Unter Details können Sie diesen ablesen.
Jetzt sollten Sie den Datenbank Manager sehen. Das Masterpasswort ist “myodoo2018”.
Dieses können Sie jederzeit ändern.
Falls das System nicht läuft, überprüfen Sie den Reiter “Prozess” und “Protokoll”
Diese sollten wie abgebildet aussehen.
5.8.4 Das Filestore
Der Container hat jetzt im Docker Ordner die Ordner “addons”, “filestore” und “sessions” abgelegt.
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
Falls Sie zusätzliche Module verwenden wollen, können Sie diese unter “addons/x/” ablegen.
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.
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.
