Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
server:docker [2018/07/12 19:50]
st [docker Apparmor]
server:docker [2018/11/05 16:01] (aktuell)
st [Registries benutzen]
Zeile 6: Zeile 6:
  
 [[wpde>​Docker|Quelle Wikipedia]] [[wpde>​Docker|Quelle Wikipedia]]
 +
 +===== Docker Einsatz =====
 +
 +**Vorteile**:​
 +  * Docker zieht eine Abstraktionsebene ein, d.h. die darunterliegende Struktur (LAN, Storage, Distribution und Paketabhängigkeiten) muss bei der Anwendung nicht betrachtet werden. Überall lauffähig, nur die docker-version muss beachtet werden
 +  * Ressourceneinsatz (Massenhosting)
 +  * Skalierbarkeit (Lastspitzen abfangen)
 +  * Deployment kann schnell und oft erfolgen
 +
 +
 +**Nachteile**:​
 +  * in Hochsicherheitsumgebungen nicht einsetzbar
 +    * nicht zertifizierbar,​ da Isolierung der Anwendungen nur durch den docker-daemon erfolgt (gleicher Kernel für alle etc.)
 +    * Angriffsvektoren durch [[https://​justi.cz/​security/​2018/​09/​13/​alpine-apk-rce.html|alpine]] Distribution
 +    * extern gebaute Images sind ein Risiko, Einzelfallprüfung vom wem ein image gebaut wird
 +  * monolitische Software (mehrere Dienste in einem Container ...) lassen Vorteile ungenutzt
 +  * Anwendungen die stateful sind (Datenbanken,​ Storagecluster)
 +  * umfangreiche Umgebungsabhängigkeiten (Repository,​ docker registry, CI/​CD-Pipeline,​ Orchestrierung wie docker swarm oder kubernetes)
 +  * debugging wird komplexer:
 +    * Zusammenspiel der microservices
 +    * networking
 +    * in Container hinein gehen, teilweise stehen dort debugging tools nicht zur Verfügung
 +
 +
 +==== Welche Software ist geeignet? ====
 +
 +geeignet:
 +  - eigenprogrammierte Software mit CI/​CD-Deployment
 +  - microservice-Architektur
 +  - stateless services
 +
 +
 +eher nicht
 +  - Drittanbietersoftware ohne microservices
 +  - stateful-software wo Skalierung unerwünscht oder kontraproduktiv ist
 +
  
 ===== Einrichtung ===== ===== Einrichtung =====
  
-via repo einbindenbei Linux ist die mitgelieferte Version ​oft zu alt: https://​docs.docker.com/​install/​+Bevorzugte Methode ist die Einbindung ​via repo, fast immer ist die bei Distributionen ​mitgelieferte Version zu alt
 + 
 +[[https://​docs.docker.com/​install/​|Siehe Installationshandbuch]],​ z.B. [[https://​docs.docker.com/​install/​linux/​docker-ce/​ubuntu/​|Ubuntu]] oder [[https://​docs.docker.com/​install/​linux/​docker-ce/​debian/​|Debian]].
  
 ==== docker-compose ==== ==== docker-compose ====
Zeile 217: Zeile 255:
 [[https://​github.com/​wsargent/​docker-cheat-sheet#​dockerfile|image erstellen (mit Dockerfile)]]: ​ [[https://​github.com/​wsargent/​docker-cheat-sheet#​dockerfile|image erstellen (mit Dockerfile)]]: ​
  
 +**image aus docker-compose-file erstellen**:​ <code bash>​docker-compose -f $COMPOSE-FILE.yaml up</​code>​
  
 **image aus Dockerfile erstellen**:​ **image aus Dockerfile erstellen**:​
Zeile 251: Zeile 290:
 === Registries benutzen === === Registries benutzen ===
  
-neben der Standard-registry von hub.docker.com können ​(und sollten) ​weitere registries verwendet werden. Insbesondere wenn die images privat sein sollen und um zu verhindern das durch externe Fehler Applikationen ihren Betrieb einstellen.+neben der öffentluchen ​Standard-registry von hub.docker.com können weitere registries verwendet werden. Insbesondere wenn die images privat sein sollen und um zu verhindern das durch externe Fehler Applikationen ihren Betrieb einstellen.
  
-  - offizielle registry: https://​hub.docker.com/​explore/​+  - offizielle registry ​(öffentlich): https://​hub.docker.com/​explore/​
   - privates Repo auf docker hub mit Anmeldung: ​   - privates Repo auf docker hub mit Anmeldung: ​
-  ​- [[https://​docs.docker.com/​registry/​introduction/​|eigene Registry]]: <code bash>​docker login https://​meine.registry.de</​code>​ +      ​- [[https://​docs.docker.com/​registry/​introduction/​|eigene Registry]]: <code bash>​docker login https://​meine.registry.de</​code>​ 
- +      - mehr als ein privates Repo [[https://​hub.docker.com/​billing-plans/​|erfordert Geldeinsatz]] 
-z.B. gitlab container registry (ab v.8.8): https://​about.gitlab.com/​2016/​05/​23/​gitlab-container-registry/​ https://​docs.gitlab.com/​ee/​administration/​container_registry.html +  -  
- +  - [[https://​docs.docker.com/​ee/​dtr/​|Docker Trusted Registry]] enthalten in Docker Enterprise Edition 
 +  - [[https://​docs.docker.com/​registry/​|Docker Registry]] als Dienst 
 +  - [[https://​github.com/​docker/​distribution|Registry 2.0]] ([[https://​github.com/​docker/​distribution/​blob/​master/​ROADMAP.md|Roadmap]]) soll der Nachfolger werden 
 +  - weitere Software 
 +    - z.B. gitlab container registry (ab v.8.8): https://​about.gitlab.com/​2016/​05/​23/​gitlab-container-registry/​ https://​docs.gitlab.com/​ee/​administration/​container_registry.html
  
  
Zeile 329: Zeile 371:
   * [[https://​docs.docker.com/​storage/​volumes/#​backup-restore-or-migrate-data-volumes|Backup,​ restore, oder migrieren von data volumes]]   * [[https://​docs.docker.com/​storage/​volumes/#​backup-restore-or-migrate-data-volumes|Backup,​ restore, oder migrieren von data volumes]]
  
-==== Zusatztools ==== 
  
-=== docker-machine === 
  
-[[https://​docs.docker.com/​machine/​overview/#​why-should-i-use-it|docker-machine]] ist ein tool um docker-Hosts zu provisionieren (auf denen dann docker container laufen können). ​ 
  
 +
 +===== Clustering =====
 +
 +  * [[Kubernetes]]
  
 ==== docker swarm ==== ==== docker swarm ====
Zeile 402: Zeile 445:
  
  
 +
 +
 +==== Zusatztools ====
 +
 +=== docker-machine ===
 +
 +[[https://​docs.docker.com/​machine/​overview/#​why-should-i-use-it|docker-machine]] ist ein tool um docker-Hosts zu provisionieren (auf denen dann docker container laufen können). ​