Rückblick: DockerCon in Austin, Texas USA

Wir nutzen seit 4 Jahren Docker und unterstützen Kunden bei der Integration in ihren Continuous-Integration- und -Deployment-Prozess. Darum sind wir auch seit Anfang 2017 von Docker autorisierter Consulting Partner für die Schweiz.

DockerCon

Darum war es für mich klar den weiten Weg an die DockerCon 2017 nach Austin, Texas, im Südwesten der USA auf mich zu nehmen, um mich mit 5500 Gleichgesinnten zu treffen. Die Konferenz, die 2014 im kleinen Rahmen mit 500 Teilnehmern begann, hat sich in den vergangenen beiden Jahren jeweils mehr als verdoppelt und stösst an die Grenzen der jeweiligen Konferenzzentren. Nach kleineren Locations in San Francisco 2014/2015, in Seattle 2016 und in Austin 2017 wird die Konferenz nächstes Jahr im Moscone Center San Francisco stattfinden, auf Augenhöhe mit der Apple WWDC, Google I/O, etc.

Anreise
Ich flog am Sonntag von Zürich via London nach Austin, beim Boarding in London sind mir schon etwa ein Dutzend Personen mit Docker-T-Shirts aufgefallen, die alle ebenfalls an die Konferenz unterwegs waren, die Hälfte Mitarbeiter von Docker und die andere Hälfte Partner und Kunden.

Austin, TX

Vor meinem Besuch in Austin kannte ich die Stadt nicht besonders gut: ich wusste, dass Uber und Lyft verboten sind und dass sie die Hauptstadt des Bundesstaates Texas ist, und das hat bei mir eher für Skepsis gegenüber der „Cowboy-Hauptstadt“ geführt. Vor Ort war ich sehr positiv überrascht: Der alternative Transportanbieter „Fasten“ funktionierte perfekt, das Wetter war mit 20-30 °C im Frühling für mich sehr angenehm, in der Innenstadt gibt es ein „Tram“ vom Schweizer Hersteller StadlerRail, von der Strasse abgetrennte Velowege, eine grosse Parkanlage um den aufgestauten Colorado River und auch sonst viele Grünflächen in der Stadt – für mich alles sehr sympathisch.

Was ich ebenfalls vorher nicht wusste war, dass die Stadt mit knapp einer Million Einwohnern und gut zwei Millionen Personen in der Agglomeration eines der wichtigsten Technologie-Zentren in den USA neben dem Silicon-Valley ist: Dell, IBM, Freescale Semiconductors, Apple, Amazon, Cisco, Dropbox, Google, Whole Foods und viele mehr haben Büros in Austin um sich die mehreren Tausend jährlichen Abgänger der University of Texas at Austin unter den Nagel zu reissen. Die High-Tech-Branche sei es auch zu verdanken dass Austin 2017 als „best place to live“ ausgezeichnet wurde und die die mit durchschnittlich 50 Personen pro Tag am schnellsten wachsende Stadt der USA ist. Ebenfalls in Austin findet jährlich das unterdessen 10 Tage dauernde „South by Southwest“ Festival statt, einer Mischung aus Film-, Musikfestival und Konferenz mit über 50’000 Besuchern und unzähligen (Openair-) Konzerten und Events verteilt in der ganzen Stadt.

Tag 0

Am Montag, dem Tag vor dem offiziellen Beginn der Konferenz war die Anmeldung bereits geöffnet um seinen Badge ohne lange anzustehen abzuholen. Am Abend gab es einen kleinen Willkommens-Apéro in der grossen Messehalle, in der auch das Catering-Buffet und die Aussteller/Sponsoren waren.

 

Tag 1

Der erste Tag der Konferenz war geprägt von der zweistündigen Keynote-Show: der offiziellen Eröffnung durch Docker CEO Ben Golub und der Ankündigung der grössten Neuerungen:

Bild: https://blog.docker.com/2017/04/dockercon-2017-day-1-highlights/

Multistage Dockerfile Builds
Ab Docker CE 17.05 kann man mehrere „FROM“ in seinem Dockerfile

Wer seine Entwicklungsumgebung in einem Docker-Container hat und/oder seine Software-Releases und -Container nicht durch ein zentrales CI/CD wie Jenkins oder Gitlab CI bauen lässt, kennt das Problem: die Container werden durch die ganzen für die Entwicklung/Kompilierung benötigten Tools und Libraries sehr schnell viele Hundert Megabyte gross, bei vielen Releases und/oder vielen parallelen Instanzen summiert sich das und auch der Push- und Pull-Vorgang dauert jeweils länger. Das „Builder Pattern“ bedeutet dass man einen (grossen) Container mit allen Tools für das Einsammeln von Dependencies und Kompilierung verwendet, der die fertige Software dann in einen zweiten, neuen Container verpackt, der entsprechend schlank sein kann, weil er nur die Applikation selbst ohne Development-Tools benötigt. Gerade für zu kompilierende Programmiersprachen (Java, Go, Erlang/Elixir) oder mit aufwendigen Dependencies (Node.js) kann dies einen grossen Einfluss auf die Grösse des Produktions-Containers haben. Bisher musste man sich die beiden Container und das Übergeben der fertigen Software selber über ein Shell-Script zusammenbauen.

Neu kann man dies im gleichen Dockerfile machen: zuerst erbt man „FROM devimage“, fügt seinen Applikationscode hinzu, installiert dependencies und kompiliert, danach kann man „FROM prodimage“ erben und kopiert mit „COPY –from=devimage ./target/app.jar app.jar“ nur das effektiv benötigte Artefakt in den sonst leeren Produktions-Container:

# First stage to build the application
 FROM maven:3.5.0-jdk-8-alpine AS build-env
ADD ./pom.xml pom.xml
ADD ./src src/
RUN mvn clean package

# Final stage to define our minimal runtime
FROM FROM openjdk:8-jre
COPY --from=build-env target/app.jar app.jar
RUN java -jar app.jar

 Docker Swarm >=1.12 Der neu auf SwarmKit basierende Docker Swarm Mode in Docker Engine 1.12 und neuer bietet einige interessante Funktionen:
  • Einfache und gleichzeitig sichere Erstellung eines Swarm: Mit der ersten Docker Engine erstellt man den Swarm-Leader, der Erstellungsprozess erklärt gleich wie man weitere hinzufügen kann:

 

[node1] $ docker swarm init --advertise-addr $(hostname -i)
Swarm initialized: current node (1fnndcfsi80dt5nbyvoji5oxj) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-4mzgh64gwi0n2xodyr10g6f1zo3gwhqh2rhxhbhss2wdpjzsrh-5k9blmu2qlc23d58vrrt1jx8w \
    10.0.96.3:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Das Token besteht aus dem Präfix „SWMTKN“, das man zum Auffinden „verlorener“ bzw. aus Versehen publizierter Tokens benutzen sollte, der Version 1, dem Fingerprint der Certificate Authority die der swarm init erstellt hat, einem zufälligen Passwort und die Adresse des Swarm Leaders, bei dem sich die zukünftigen Swarm-Teilnehmer melden können. Durch den Fingerprint kann der Teilnehmer überprüfen, ob der Zertifikat des Leaders am anderen Ende der Leitung effektiv von derselben CA stammt wie das Token. Einen (nicht-privilegierten) Worker fügt man einfach durch Kopieren des Befehls vom Master hinzu:

[node2] $ docker swarm join \
>     --token SWMTKN-1-4mzgh64gwi0n2xodyr10g6f1zo3gwhqh2rhxhbhss2wdpjzsrh-5k9blmu2qlc23d
>     10.0.96.3:2377
This node joined a swarm as a worker.
[node1] $ docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
1fnndcfsi80dt5nbyvoji5oxj *  node1     Ready   Active        Leader
jnp6c8rtcomt759bnlbdmonj9    node2     Ready   Active

Die ganze Zertifikats-Erstellung und -Management übernimmt SwarmKit im Hintergrund. Ein Beispiel zum selber ausprobieren: http://training.play-with-docker.com/swarm-mode-intro/

  • Jede Kommunikation zwischen den Docker Engines innerhalb des Swarms erfolgt mit TLS verschlüsselt und jeder Teilnehmer authentisiert und authorisiert (Leader oder Worker) sich gegenseitig mittels den Zertifikaten.
  • Optional kann auch der Traffic zwischen den Containern verschlüsselt und Secrets von den Leadern durch einzelne Worker an die Container geleitet werden.
  • Worker im Swarm können unter Linux oder Windows laufen, der Swarm platziert die Container automatisch auf das Betriebssystem, welches sie benötigen. Gruppen von Workern können mittels Labels voneinander Abgetrennt und die Platzierung von Containern auf diese Gruppen weiter eingeschränkt werden.
  • Alle Komponenten sind in Swarm dabei, es werden keine externen Datenbanken, PKI etc. benötigt.

LinuxKit: Toolbox für Linux-Distributionen
Das neue LinuxKit ist eine Sammlung von Tools für die Erstellung von Linux-Distributionen mit dem Fokus auf Sicherheit durch aktuellste Linux-Kernel-Technologien und minimieren der Angriffsfläche: Nur explizit benötigte Komponenten werden hinzugefügt und alle Komponenten werden in Containern gestartet (zum Beispiel auch der DHCP-client). Das Ergebnis kann als kernel+initrd Dateien oder als ISO, GCP, QCOW, VHD oder VMDK Disk-Image exportiert und entsprechend in einem Hypervisor gestartet werden.

Ebenfalls angekündigt wurde, dass mit Docker für Windows 10 und Windows Server eine auf LinuxKit-basierende VM mitgeliefert werden wird, damit Linux-basierende Docker Images mittels Hyper-V Isolation automatisch gestartet werden können.

Moby: Toolbox für Container-Engines
Einiges an Aufsehen in der Community hat die Ankündigung des Moby-Projektes erzeugt, insbesondere weil ohne explizite Warnung das offizielle Docker Opensource Repository https://github.com/docker/docker nach https://github.com/moby/moby verschoben wurde und dies missverstanden wurde.

Moby ist eine Sammlung von Tools um Container-Engines zu erstellen, also Produkte wie die Docker CE oder Docker EE aus den Komponenten Docker CLI, Docker Daemon containerd, Image Building, SwarmKit, Storage, Networking, etc. zusammenzustellen und für die verschiedenen Betriebssysteme und in den für Cloud-Provider kompatiblen Formaten zu erzeugen. Für Nutzer von Docker CE/EE ändert sich also nichts, ausser dass der Herstellungsprozess transparenter wird.

Docker ID, Docker Cloud & Docker Desktop-to-Cloud
Schon vor einer Weile wurde das ehemalige „Docker Hub Login“ in Docker ID umbenannt, damit es auch von anderen Docker-Services benutzt werden kann. Letztes Jahr wurde der Docker Cloud Service gestartet: Über das online Portal https://cloud.docker.com/ können Docker Image Builds und Docker Image Repositories verwaltet werden und neue Docker Swarms mittels einfachen Web-GUI auf AWS gestartet werden. Im „beta“ Stadium ist die Verwaltung der Swarms – egal ob über das Portal erstellte oder bestehende „bring your own swarm“. In der Webapplikation können auch Organisationen erstellt und verwaltet werden, die analog zu Github-Organisationen einen eigenen Namespace haben und es ermöglichen einzelnen Usern Zugriff darauf zu geben.

Neu ist das Desktop-to-Cloud-Feature, das in der aktuellen Docker Edge (17.05) Version dabei ist: die Docker Applikation auf dem Desktop (also Docker Mac oder Docker Windows) zeigt automatisch alle Repositories und Swarms in der Menuleiste an auf die der eingeloggte Benutzer Zugriff hat und kann sie mit einem Klick anwählen.

Andere Vorträge

 

 

 

 

DockerCon Party
Eine Party für 5500 Menschen zu organisieren ist nicht ganz einfach. Die Organisation der DockerCon 2017 hat kurzerhand die ganze „Raynee Street“ mit 15 Bars nebeneinander reserviert, da hatte es dann Platz für alle. Eine der Bars war, passend zum Thema, die „Container Bar“.

Tag 2

Der zweite Tag begann ebenfalls mit einer anderthalbstündigen „general Session“, die geprägt von Referenzkunden war:

Docker bei VISA
Der weltgrösste Zahlungsanbieter setzt gemäss eigenen Angaben auf Docker Enterprise Edition, um ihren Entwicklern die Geschwindigkeit für Self-Service zu geben.

Docker bei Metlife
Die grosse amerikanische Lebensversicherungsgesellschaft MetLife erzählte, wie sie kontinuierlich ihre Software-Landschaft erneuern:

  • Wrap: Legacy-Applikation hinter modernen, gut definierten neuen Microservice verpacken. Dies hilft die Benutzer zu motivieren die neue API zu verwenden.
  • Tap: Daten anzapfen und für andere Entwickler intern wiederum mittels einfacher API nutzbar machen. Dadurch werden die Daten hinter dieser API mobil, man ist also nicht mehr an den alten Storage gebunden.
  • Scrap: Überwachen und alte Applikation zum Schluss kontrolliert deaktivieren

Für MetLife brachte die DevOps-Truppe dingend benötigte Innovation in die Firma. Dies zeigte sich auch durch die Nutzung von Zeitgemässen Opensource Tools und Komponenten.

Oracle-Produkte in Docker
Oracle hat die Verfügbarkeit ihrer Kernprodukte Oracle Datenbank, Oracle MySQL, Oracle WebLogic Server, Oracle Coherence, Oracle Instant Client und Oracle Java 8 SE (Server JRE) als offiziell supportete Docker-Images bekannt gegeben. Die Produkte sind ab sofort im Docker Store kostenlos für die Entwicklung verfügbar.

Andere Vorträge

 

Cool Hacks
Die letzte offizielle Session ist jeweils die „Cool Hacks“ closing session, dieses Jahr wurden dadurch geehrt:

  • http://labs.play-with-docker.com/ und training.play-with-docker.com: Öffentlicher, kostenloser Dienst um mit aktuellen Docker-Versionen zu experimentieren und Sammlung von Tutorials um Docker zu lernen. Verwendet hinter den Kulissen Docker-in-Docker und Swarm-in-Swarm damit jeder Benutzer „seinen“ Bereich auf der Kommandozeile als auch im virtuellen Netzwerk hat.
  • Functions as a Service von Alex Ellis, basierend auf Docker Swarm

Tag 3

An den ersten beiden Tagen fanden ausser den Keynotes bis zu 7 Vorträge parallel in verschiedenen Räumen statt. Es war also unmöglich alle Vorträge live zu sehen. Alle Besucher konnten die Vorträge bewerten und die besten 8 wurden am dritten Tag live wiederholt. Am Nachmittag des dritten Tages war als Abschluss der Mentor Summit für Docker Mentoren. Zum Abschluss der Konferenz liessen wir es uns in einem lokalen Barbecue gut gehen:

Alle Slides der Vorträge sind unter
https://www.slideshare.net/docker und die Videos unter https://www.youtube.com/playlist?list=PLkA60AVN3hh_nihZ1mh6cO3n-uMdF7UlV

Ich freue mich auf die DockerCon Europe 16-18.10.2017 in Kopenhagen, Dänemark: http://europe-2017.dockercon.com/