Container Technik¶
Weitere Fachbgegriffe und kurze Erläuterungen:
docker Client-Server-Modell (Anm.: bei Windows/MacOS Umsetzungen wird das komplizierter!)
Die Umsetzung mit Linux: docker CLI mit dockerd (Docker Daemon/Engine)
Docker-Client und Server kommunizieren über eine HTTP-RESTful API.
Anm.: für eine sichere Kommunikation siehe Docker Security HTTPS
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
Logische Unterteilung einer Registry; Fundus mit mehreren Images (siehe Tags); siehe ubuntu:* (beliebige Ubuntu-Varianten)
keine init/systemd Techniken
Was passiert bei mehr als einem Dienst pro Container?
Virtuelle VMs vs. Container
die Container als „Leichtgewichte“ und ohne Prozesse-Lasten; und Nutzung von VMs für Docker-Hosts!
Virtuelle Maschinen und Container (Bild: Liebel - Skalierbare Container-Infrastrukturen für Ihr Unternehmen)
Container Lösungen (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
rkt (sprich: Rocket) - von CoreOS (bzw. Produkt Container Linux)
VMware Photon
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
Docker, CoreOS/rkt, LXD/LXC, Photon, …
OCF (Open Container Format) der OCI (Open Container Initiative - www.opencontainers.org
Namespaces
Ressourcen von Kernel lassen sich isolieren - Prozesse erhalten quasi eigene Umgebung
Tipp
Übung mit uname -r
und grep -i pretty_name /etc/os-release
Aufrufen in Host und Containern!
Docker Windows Images
Bitte hierzu die folgenden Technikhinweise beachten:
Windows Server Core
Nano Server
IIS
ASP.NET
Anm.: Nano Server nur für Windows Server Instanzen verfügbar!