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

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:

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 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!