Benutzer-Werkzeuge

Webseiten-Werkzeuge


infrastruktur:rz:docker:best-practices

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
infrastruktur:rz:docker:best-practices [2020-09-11 23:39] haseinfrastruktur:rz:docker:best-practices [2020-09-18 21:08] (aktuell) hase
Zeile 1: Zeile 1:
-====== best-Practices ======+====== Best Practices Docker Images ======
 {{tag> storage-server infrastructure shackoperations }} {{tag> storage-server infrastructure shackoperations }}
  
Zeile 5: Zeile 5:
 | Version | Bearbeiter | Änderungsdatum | Änderungsbemerkung | | Version | Bearbeiter | Änderungsdatum | Änderungsbemerkung |
 | 0.1 | hase | 11-09-2020 | Seite angelegt | | 0.1 | hase | 11-09-2020 | Seite angelegt |
-| 0.2 | hase | 12-09-2020 | Resourcenplanung/Netzwerkmode |+| 0.2 | hase | 12-09-2020 | Resourcenplanung/ Netzwerkmode / Git Secret | 
 +| 0.3 | hase | 12-09-2020 | Trennung nach Compose File und Docker Image |
  
 ====== Best Practices für Docker Images im shack ====== ====== Best Practices für Docker Images im shack ======
-Hi, hier sollen alle Best Practices für shack Docker Images aufgeschrieben werden.+Hi, hier sollen alle Best Practices für shack Docker Images oder Compose Files aufgeschrieben werden.
  
-====== Must-Haves ====== +====== Compose Files ====== 
-===== Healthcheck =====+===== Must-Haves ===== 
 +==== Healthcheck ====
 Ein Docker Container sollte einen Healthcheck definiert haben. Siehe hierzu Ein Docker Container sollte einen Healthcheck definiert haben. Siehe hierzu
   - [[https://docs.docker.com/compose/compose-file/#healthcheck|Compose Reference Healthcheck]]   - [[https://docs.docker.com/compose/compose-file/#healthcheck|Compose Reference Healthcheck]]
   - [[https://gitlab.com/shackspace/docker-images/dnsmasq-resolver/-/blob/master/docker-compose-example.yml|dnsmasq resolver with healthcheck in compose file]]   - [[https://gitlab.com/shackspace/docker-images/dnsmasq-resolver/-/blob/master/docker-compose-example.yml|dnsmasq resolver with healthcheck in compose file]]
  
-===== Resourcenplanung =====+==== Resourcenplanung ====
 Ein Docker Container sollte immer eine Begrenzung der CPU und RAM Resourcen bekommen. Ohne Resourcensteuerung werden dem Container alle CPUs und jeglicher RAM angezeigt; diesen kann er dann auch allokieren (z.B. bei einem Memory Leak wird er das tun) Ein Docker Container sollte immer eine Begrenzung der CPU und RAM Resourcen bekommen. Ohne Resourcensteuerung werden dem Container alle CPUs und jeglicher RAM angezeigt; diesen kann er dann auch allokieren (z.B. bei einem Memory Leak wird er das tun)
 <code> <code>
Zeile 25: Zeile 27:
 </code> </code>
  
-===== Passwörter / Secrets =====+==== Passwörter / Secrets ====
 Passwörter müssen in ein zweites Compose File (docker-compose.secret.yml) eingetragen und mit <code>git secret hide</code> vor git versteckt werden. Passwörter müssen in ein zweites Compose File (docker-compose.secret.yml) eingetragen und mit <code>git secret hide</code> vor git versteckt werden.
  
Zeile 31: Zeile 33:
  
  
-===== Registry ===== +===== Optional ===== 
-Die Docker Images sollten alle unter einem Ort verfügbar sein. Momentan existiert eine Gruppe auf gitlab.com +==== Container ohne Netzwerk ====
-[[https://gitlab.com/shackspace/docker-images]] +
- +
-===== docker-compose Example File ===== +
-Es muss ein docker-compose.yml Beispiel existieren. +
- +
- +
-====== Optional ====== +
-===== CI ===== +
-Die Docker Images sollten alle über eine CI Pipeline automatisch über Gitlab Runner gebaut werden. In jedem Git Repo für ein Docker Image muss daher eine .gitlab-ci.yml vorhanden sein. +
- +
-===== Service-Handling ===== +
-Das Service-Handling in Containern kann über viele Wege abgehandelt werden. Empfohlen ist als Entrypoint entweder +
-  * direkt den Befehlsaufruf mit Parametern oder +
-  * ein Shell-Skript, welches unter /entrypoint.sh auffindbar sein soll. +
- +
-===== Externe Abhängigkeiten ===== +
-Wenn ein Container eine externe Abhängigkeit hat darf diese nicht hart ausgelegt sein. Crashed der Container in Abwesenheit der Abhängigkeit muss das Design überarbeitet werden. +
- +
- +
-===== Container ohne Netzwerk =====+
 Wenn ein Container kein Netzwerk braucht (watchtower oder autoheal) kann mit Hilfe des Parameters network_mode das Netzwerk ausgeschaltet werden. Dann wird kein "containername_default" Netzwerk angelegt. Wenn ein Container kein Netzwerk braucht (watchtower oder autoheal) kann mit Hilfe des Parameters network_mode das Netzwerk ausgeschaltet werden. Dann wird kein "containername_default" Netzwerk angelegt.
 <code> <code>
Zeile 60: Zeile 42:
 </code> </code>
  
 +----
 +====== Docker Image ======
  
 +===== Must-Haves =====
 +==== docker-compose Example File ====
 +Es muss ein docker-compose.yml Beispiel existieren.
  
 +==== Externe Abhängigkeiten ====
 +Wenn ein Container eine externe Abhängigkeit hat darf diese nicht hart ausgelegt sein. Crashed der Container in Abwesenheit der Abhängigkeit muss das Design überarbeitet werden.
  
 +===== Optional =====
 +==== Registry ====
 +Die Docker Images sollten alle unter einem Ort verfügbar sein. Momentan existiert eine Gruppe auf gitlab.com
 +[[https://gitlab.com/shackspace/docker-images]]
  
 +==== CI ====
 +Die Docker Images sollten alle über eine CI Pipeline automatisch über Gitlab Runner gebaut werden. In jedem Git Repo für ein Docker Image muss daher eine .gitlab-ci.yml vorhanden sein.
  
 +==== Service-Handling ====
 +Das Service-Handling in Containern kann über viele Wege abgehandelt werden. Empfohlen ist als Entrypoint entweder
 +  * direkt den Befehlsaufruf mit Parametern oder
 +  * ein Shell-Skript, welches unter /entrypoint.sh auffindbar sein soll.
infrastruktur/rz/docker/best-practices.1599860366.txt.gz · Zuletzt geändert: 2020-09-11 23:39 von hase