Container Technik¶
Weitere Fachbgegriffe und kurze Erläuterungen:
Docker Client-Server-Modell¶
Anm.: bei Windows/MacOS Umsetzungen wird das komplizierter, weil die Schnittstelle nicht direkt erreichbar ist.
Die Umsetzung mit Linux: docker CLI mit dockerd (Docker Daemon/Engine)
Klassische Docker Technik und Unix Socket per curl und jq¶
Docker-Client und Server kommunizieren über eine HTTP-RESTful API.
Anm.: für eine sichere Kommunikation siehe Docker Security HTTPS und nutzen Docker Context Techniken.
Einfacher Test der HTTP-Verbindung:
curl -s --unix-socket /var/run/docker.sock http://localhost/images/json
Das erzeugt einen etwas unleserlichen (serialisierten) Infostrom,
der sich mit dem Tool jq besser analysieren und lesen lässt:
curl -s --unix-socket /var/run/docker.sock http://localhost/images/json | jq
Tipp
Paket jq nachinstallieren! Anm.: für CentOS
benötigt man EPEL-Repo!
Bei diesen Ausgaben bitte auch gleich auf die Syntax der JSON-Strukturen achten:
Klammerungen
Aufzählungen mit Kommata
Keine Kommentare!
Registry¶
Technisch: Image-Datenbank mit Service zum pullen und pushen von Images
Im Produktionsbetrieb müsssen aus Sicherheitaspekten vertrauenswürdige und daher firmeninterne Registries genutzt werden.
Docker Registry: https://index.docker.io/v1/
Registry finden/analysieren: docker info | grep -i registry
Alternative Registries:
Quay (https://quay.io/ )
Google Registry (https://cloud.google.com/container-registry/ )
Amazon Elastic Container Registry (ECR) (https://aws.amazon.com/de/ecr/ )
Anm.: Werden im Seminar - bis auf Weiteres - keine Rolle spielen (siehe auch nötige Accounts, ggfs. Kosten, …)
Repository¶
Hier erhalten wir Logische Unterteilungen einer Registry.
Wir haben mehreren Images mit verschiedenen Tags - siehe ubuntu:… (beliebige Ubuntu-Varianten)
Erinnerungen:
Wir habe keine init/systemd Techniken!
Was passiert bei mehr als einem Dienst pro Container?
Virtuelle VMs vs. Container¶
Die Container gelten als Leichtgewichte und kommen ohne Prozesse-Lasten aus.
VMs werden häufig für den Einsatz als Docker-Hosts genutzt.
Virtuelle Maschinen vs. Container¶
Virtuelle Maschinen und Container (Bild: Liebel - Skalierbare Container-Infrastrukturen für Ihr Unternehmen)
Container Lösungen¶
Siehe auch: Wikipedia Containervirtualisierung )
Klassiker:
FreeBSD Jails (ca. 2000), Solaris Zones (ca. 2005), OpenVZ (ca. 2005; siehe Virtuozzo von Parallels)
LXD für LXC (ca. 2008; Linux Containers oder Lightweight Linux Container) Ausgangsbasis für Docker; Heute: Canonical
rkt (sprich: Rocket) - von CoreOS (bzw. Produkt Container Linux)
VMware Photon (Heute: Broadcom)
Docker
März 2013 Fa. dotCloud - dann Oktober 2013 umbenannt in Docker Inc. mit Sitz in Berlin
Neue Componenten (ab Version >= 1.11): containerd, runc,
aus „Docker Daemon“ wurde Docker Engine; ab Version 1.12 mit eingebauter Swarm Technik: Swarm Mode
Schwerpunkt auf Applikationsvirtualisierung und nicht auf abgespeckte VMs
Tipp
Darstellung runc als eigenständiges Container-Tool bei Liebel (S. 85ff.)
Container Formate¶
Alle sprechen heute ein gleiches Containerformat OCF
klassische Formate: Docker, CoreOS/rkt, LXD/LXC, Photon, …
OCF (Open Container Format) der OCI (Open Container Initiative - www.opencontainers.org
Namespaces¶
Die Ressourcen vom Kernel lassen sich isolieren. Prozesse erhalten so quasi eigene Umgebungen.
Tipp
Übung mit uname -r und grep -i pretty_name /etc/os-release Aufrufen in Host und Containern!
Docker Windows Images¶
Wie schon mehrfach gesagt: die Windows Images spielen im Grunde keine Rolle bei den Container-Umsetzungen.
Bitte aber gerne die folgenden Technikhinweise beachten:
Windows Server Core
Nano Server
IIS
ASP.NET
Anm.: Nano Server nur für Windows Server Instanzen verfügbar!