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:

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

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!