In einem Satz „Docker ist eine Open Source Laufzeitumgebung die das Bereitstellen einer beliebigen Anwendung in Form von portablen, selbst-enthaltenen Containern mit wenig Mehraufwand ermöglicht und dabei quasi überall* läuft.“
Über Docker (Inc) • Ausgangspunkt der Container Community • Ursprünglich ein „Abfallprodukt“ der Firma DotCloud • Entstanden vor ca. 2 1/2 Jahren • Bislang knapp 160 Millionen US-Dollar Risikokapital • Support durch Google, IBM, Microsoft, VMWare, Red Hat • Eines aktivsten „Go“ Projekte weltweit
Container Laufzeitumgebungen • LxC, User space tools und APIs um Container zu verwalten. Standard Format bis Docker 0.9 • Libvirt, Allrounder um Virtualisierungsfunktionen von (nicht nur) Linux möglichst portabel nutzbar zu machen. VMs und Container. • Libcontainer, Standardisiertes Interface um Container zu verwalten, unabhängig vom Betriebssystem, Go, jetzt „runc container cli tools“
Gibt's da nicht auch was von …? Bootstrap in Archlinux • # pacstrap -i -c -d ~/MyContainer base Container starten • systemd-nspawn -b -D ~/MyContainer -n • systemctl enable machines.target • mv ~/MyContainer /var/lib/machines/MyContainer • systemctl enable [email protected]
Die technologische Basis • Linux cgroups, Google • Kernel Namespaces, IBM • Mindestens Linux Kernel 3.10 • 64bit only (offziell) • LXC-Tools • SELinux, Red Hat => Im Fall von Docker theoretisch ab CentOS 6.5 / Ubuntu 14.04
Open Container Projekt • Non-Proft unter der Schirmherrschaft der Linux Foundation https://www.opencontainers.org • Gefördert vom Großteil der Industrie (HP, Red Hat, IBM, Google, VM Ware, EMC) • Offener Industrie Standard für Container und deren Laufzeitumgebung • Docker, Rocket und einige mehr • Wichtig für die nächste Technologiestufe in der Container Industrie
Container Betriebssysteme Optimiert für die Ausführung von Containern • Skalierung, Monitoring, Logging für Container • Hochverfügbares minimales (Container) System • Weniger Angriffsfäche • Privat, Public und Hybrid Cloud aware • Erweiterte Sicherheitsfunktionen • In der Regel ohne klassisches Paketmanagement • Management APIs und CI Integration • Buzzword-Alarm - MICROSERVICES!
Vorteile Container vs. Paketmanagement • Die eigentliche Distribution spielt nur noch eine geringe Rolle • Isolation der Softwarekomponenten (Dependency Hell) • Auslieferung der gesamten Architektur in einem Paket • Betrieb von Legacy Software in einer zukunftssicheren Umgebung • Neue Möglichkeiten für Tests und Automatisierung • Eine Vielzahl von fertigen Containern frei verfügbar • Möglichkeiten für Rollback, Failback
CoreOS • Container Laufzeitumgebung vorinstalliert • Automatische Updates des Kernsystems mit Rollback Option • Sehr schnell und schlank • Sehr viele Open Source Projekte, u.a. • etcd – Key/Value Store (z.B. DB Verbindungsdaten, etc) • feet – „Cluster Awareness“ für systemd • Prominenter Fürsprecher Greg Kroah-Hartman (GKH), u.a. Maintainer des Linux Kernel „stable“ Branch • Open Source
CoreOS - Rocket • Eigenes Container Format „rkt“ • Alternative zur Docker runtime ohne Daemon • Cluster Orchestration via feet, Kubernetes • Kann auch Docker Container ausführen • Ausführung via systemd oder QEMU/KVM • Folgt der offenen „App Container spec“ appc mit Support von Red Hat, VMware und Google
Atomic Host • Red Hat getrieben, extrem abgespecktes Red Hat Linux • Bekannte Tools wie Kickstart, Anaconda verfügbar • Derzeit beste Security-Implementierung • Offen, aber stark abgestimmt auf das eigene Ökosystem • Openstack (IaaS) • Openshift (PaaS) • Satellite 6 • Rollback via rpm-ostree • Auch für Fedora und CentOS • appc
Snappy Ubuntu Core • Canonical / Ubuntu • Open Source Paketmanager und Laufzeitumgebung „Snappy“ • Kann auch Docker als Laufzeit für Container nutzen • Kein reines Container OS da mit Paketmanager für Mischbetrieb vorgesehen • AppArmor Support • Soll Ubuntu 14.04 als beliebtestes Cloud OS /“IoT“ OS ablösen • Ubuntu 16.04 in zwei Varianten
RancherOS • Rancher Labs (MA ex Cloud.com, dann Citrix) • „System Docker“ wird vom Kernel gestartet und hat die PID 1 – Steuerung aller weiteren Dienste wie udev, dhcp, etc. – anstatt init/upstart/systemd – Bis auf Kernel und initrd läuft alles in Containern • „User Docker“ Container für Ausführung der anderen Container • Eigene Management Plattform „Rancher“ zur Steuerung von Service Discovery, Load Balancing, Monitoring uvm.
Photon • Open Source Projekte von VMWare • Minimales Linux Container OS • Optimiert für vSphere, vCloud Air • Docker, rocket Unterstützung • Identity und Access Management – Single Sign-On, – Authentifzierung und Autorisierung mit Name und Passwort, Token und Zertifkaten. – Unterstützung für Kerberos, LDAP v3, uvm.
Weitere Kandidaten ... • Windows Nano Server, Codename ‘Tuva’ – 64bit only – Keine GUI – Management nur remote, via WMI oder PowerShell – Windows Server Containers oder Hyper-V Container • Mesosphere DCOS – Apache Mesos, Marathon, Zookeeper – Community (AWS, Azure, GCE) und Enterprise Versionen
Zusammenfassung • Derzeit extrem viele neue Möglichkeiten • In jedem Fall ist Integrationsarbeit zu leisten • Lösungen haben unterschiedliche Ansätze und Stärken • Unterschiede vor allem beim Management • Open Source vs. Proprietär • AWS, GCE und andere Cloud Anbieter ideal zur Evaluierung Die Wahl der Lösung sollte sich nach der existierenden Infrastrukturund vorhandenem Know-How richten.