Suche
Docker Ahoi!

12 Docker Tipps: So schaffen Sie den Einstieg in die Container-Welt

Hartmut Schlosser
© Shutterstock / Julia Waller

© Shutterstock / Julia Waller

 

Wir haben 12 Docker Captains gefragt, ihre Erfahrungen über Docker mit uns zu teilen. Wo profitieren sie am meisten von Container-Technologien? Mit welchen Tipps können auch Sie Ihre Arbeit mit Docker effizienter gestalten? Wie gelingt der Einstieg in Docker?

Die Einsatzmöglichkeiten von Docker sind vielfältig: Angefangen beim Aufsetzen von Entwicklungsumgebungen bis hin zu orchestrierten Deplyoments in verteilten Server-Clustern – es gibt nahezu keinen Bereich der IT, in dem Container-Lösungen keine Rolle mehr spielen.

Und doch stehen wir erst am Anfang der Container-Revolution, noch entstehen immer neue Anwendungsfälle, in denen sich Docker & Co. als nützlich erweisen. Wie tief sind Sie bereits in die Welt der Container eingestiegen?

12 Docker Captains teilen ihr Wissen

Als Inspiration für Sie haben wir 12 Docker Captains gebeten, uns ihre persönlichen Geschichten von und mit Docker zu erzählen. Im ersten Teil der Reihe erfahren wir, welchen Nutzen die Experten aus dem Einsatz von Containern ziehen. Außerdem verraten die Captains Tipps, wie auch Sie von Containern profitieren und Ihre Arbeit mit Docker verbessern können.

Docker Tipp #1

Ajeet Singh Raina ist Senior Systems Development Engineer bei DellEMC Bengaluru, Karnataka, Indien. @ajeetraina

Wie setzt du Docker ein?

Ajeet Singh Raina: Bei DellEMC arbeite ich als Senior Systems Development Engineer. Viel Zeit verbringe ich damit, mit Datenbank-Lösungen herumzuspielen. Dabei vergeht kaum ein Tag, ohne über Docker und seine Anwendung zu sprechen – sei es als ein System Management Tool, zur Test-Zertifizierung, um Validierungsaufgaben zu übernehmen oder zur Workflow-Automatisierung. Mit meinem Team arbeite ich daran, wie wir mit Docker die Lösungen vereinfachen und dabei enorme Zeitersparnisse bei der Ausführung erreichen können.

Als Teil des Global Solution Engineering spreche ich oft über Proofs of Concepts für Datacenter-Lösungen und darüber, wie wir unsere tägliche Arbeit verbessern können. Und als Docker Captain fühle ich mich auch dafür verantwortlich, den Anwendern aus der Community zu helfen. Deshalb habe ich stets die Fragen und Diskussionen in der Slack Community im Blick und teile mein Wissen fast jede Woche in Form von Blogposts mit.

Dein Docker Tipp:

Docker service inspect <service-name> gibt meist einen riesigen JSON Dump aus. Es ist dann sehr einfach, auf individuelle Properties mittels Docker Service Inspection Filterung und Template Engine zuzugreifen. Wenn man zum Beispiel den Port ausgeben möchte, der WordPress für einen bestimmten Service nutzt:

$docker service inspect -f ‚{{with index .Spec.EndpointSpec.Ports 0}}{{.TargetPort}}{{end}}‘ wordpressapp

Output:

80

Mit dieser Anweisung erhält man genau nur die Port-Nummer aus einem rieseigen JSON Dump. Erstaunlich, oder?
x

Docker Tipp #2

Nick Janetakis ist Docker Trainer und Urheber von www.diveintodocker.com. @nickjanetakis

Wie setzt du Docker ein?

Nick Janetakis: Ich nutze Docker in der Entwicklung für alle meine Webanwendungen, die vor allem in Ruby-on-Rails und Flask geschrieben sind. Außerdem ist Docker bei mir in einigen Projekten in der Produktion im Einsatz. Das sind Anwendungen, die von einem einzelnen Host Deploy bis hin zu größeren skalierbaren Systemen reichen, die via Load Balancer über verschiedene Hosts verteilt sind.

Dein Docker-Tipp:

Habe keine Angst, Docker einzusetzen. Docker bedeutet nicht, dass du gleich von 0 auf 100 in die Container-Welt einsteigen musst und jedes hochgespielte Buzzwort, das dir über den Weg läuft, aufgreifen musst. Bei Docker geht es nicht darum, ein Multidatenzentrum mit einem Load Balanced Cluster von Services aufzubauen, das Zerodown Deploys mit einer nahtlosen Integration in eine Continuous Integration & Delivery Pipeline erlaubt.

Fang einfach an und nutze Docker in der Entwicklung. Versuche ein einfaches Deployment auf einem Server, dann gehe den nächsten Schritt. Der Einsatz von Docker bringt massive Vorteile auf allen Stufen deiner Fähigkeiten und deiner jeweiligen Systemgröße.
x

Docker Tipp #3

Gianluca Arbezzano ist Site Reliability Engineer bei InfluxData Italy. @gianarb

Wie setzt du Docker ein?

Gianluca Arbezzano: Ich nutze Docker, um Anwendungen und Services wie InfluxDB in großen Cloud-Systemen zu deployen. Container ermöglichen es mir, immer genau die selbe Anwendung auf sichere Art und Weise auszuliefern. Ich nutze Docker zudem sehr häufig, um Umgebungen aufzusetzen und zu verwalten. Mit Docker Compose kann ich etwa ganz einfach eine neue Umgebung einrichten, um Smoke Tests oder Integration Tests für eine spezifische Anwendung durchzuführen. Solche Umgebungen lassen sich einfach in meine Pipeline und meinen Auslieferungsprozess integrieren, wodurch die Test integraler Betsandteil meines Release-Zyklus werden.

Dein Docker-Tipp:

Mein Tipp lautet heute: docker run -it -p 8000:8000 gianarb/micro:1.2.0x
x

Docker Tipp #4

Adrian Mouat ist Chief Scientist beim Unternehmen Container Solutions. @adrianmouat

Wie setzt du Docker ein?

Adrian Mouat: In meiner täglichen Arbeit helfe ich anderen mit Docker und damit verbundenen Technologien. Ich gebe außerdem Präsentationen, wobei meistens die Präsentationssoftware selbst in einem Container läuft.

Dein Docker Tipp:

Ich habe eine ganze Sammlung von Tricks, die ich auf der DockerConEU präsentieren werde. Wenn ich nur einen zeigen soll, dann am besten den, wie man das “docker ps” Output-Format setzen kann. Per Default wird eine wirklich lange Zeile ausgegeben, die sehr unübersichtlich wird, wenn man nicht den ganzen Bildschirm zur Verfügung hat. Man kann das Problem durch die Nutzung des Arguments `–format` beheben, um genau anzugeben, an welchen Feldern man interessiert ist:

docker ps –format \

„table {{.Names}}\\t{{.Image}}\\t{{.Status}}“

Man kann das auch als Default-Einstellung in der Datei .docker/config.json einrichten.
x

Docker Tipp #5

Vincent De Smet arbeitet als DevOps Engineer bei Honestbee, Singapore. @vincentdesmet

Wie setzt du Docker ein?

Vincent De Smet: Unser Einsatz von Docker begann vor allem innerhalb einer CI/CD Pipeline. Von dort aus ging es weiter von den Staging-Umgebungen zu unseren Produktionsumgebungen. Lediglich die Entwickler befassen sich in meinem aktuellen Unternehmen noch nicht so stark mit Docker. Man könnte auch hier Container nutzen, um neue Features für existierende Web Services zu bauen – aber aktuell hat jeder Entwickler noch seine eigene Art zu arbeiten. Doch angesichts der Tatsache, dass Container überall sonst dominieren und Docker Tools für Entwickler immer besser werden, ist es nur eine Frage der Zeit, bevor auch die Entwickler Container in ihren täglichen Workflow aufnehmen.

Als DevOps Engineer, der damit beauftragt ist, containerisierte Produktionsumgebungen einzurichten und Developer Workflows zu verbessern, löse ich persönlich die meisten Probleme in meiner täglichen Arbeit mittels  Docker-Container.

Dein Docker-Tipp:

Mein Tipp ist, diesen Best Practices für das Schreiben von Dockerfiles zu folgen: https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/ Hier wird sehr gut begründet, warum man gewisse Dinge auf eine bestimmte Art und Weise tun sollte – und ich kenne viel zu viele Dockerfiles, die nicht diesen Best Practices folgen.

Jeder, der etwas fortgeschrittener mit Docker ist, wird auch viel von der Linux-Alpine-Distribution und ihrem Package Manager profitieren: https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management.

Und für alle, die gerade mit Docker beginnen, ist training.play-with-docker.com eine großartige Ressource.
x

Docker Tipp #6

Chanwit Kaewkasi ist Docker Swarm Maintainer und hat Swarm auf Windows portiert.@chanwit

Wie setzt du Docker ein?

Chanwit Kaewkasi: Ich helfe Unternehmen in Südost-Asien und Europa, ihre Anwendungsarchitektur mit Docker zu entwickeln und sie in einem Docker Swarm Cluster zu deployen.

Dein Docker-Tipp:

Die folgende Anweisung rettet stets meinen Tag: docker system prune -fxx
x
x
x
x
x

Docker Tipp #7

Kendrick Coleman ist Developer Advocate for {code} by Dell EMC. @kendrickcoleman

Wie setzt du Docker ein?

Kendrick Coleman: Docker spielt in meiner täglichen Arbeit eine große Rolle. Ich bin sehr daran interessiert, alle internen Details kennenzulernen, um auch neue Anwendungsfälle zu beherrschen. Zu wissen, dass ich die Knöpfe regeln kann, um meine Anwendungen genau so zum Laufen zu bringen, wie ich es möchte, finde ich ernorm spannend.

Insbesondere gibt es da ein Missverständnis, nämlich dass persistente Anwendungen nicht in Container laufen können bzw. sollten. Aber das Team, mit dem ich arbeite, baut Werkzeuge, um persistente Anwendungen einfach zu machen und mittels Container in existierende Tool Chains zu integrieren.

Dein Docker-Tipp:

Beginne mit dem Einfachen. Suche immer die “Low hanging fruit” – beispielsweise indem du erst einmal einen Webserver für dich zum Laufen bringst. Dann nimm deinen Host und richte darauf einen Orchestrator ein, um deine Anwendung resilient zu machen. Wenn das funktioniert, kannst du dir eine Anwendung vornehmen, die persistente Daten verwendet. So kommst du Schritt für Schritt weiter und kannst allmählich alle deine Anwendungen von virtuellen Maschinen auf Container übertragen.
x
x

Docker Tipp #8

John Zaccone arbeitet als Cloud Engineer und Developer Advocate bei IBM. @JohnZaccone

Wie setzt du Docker ein?

John Zaccone: Ich arbeite bei IBM als Developer Advocate und stehe dabei mit Entwicklern anderer Unternehmen in Kontakt, um ihnen zu helfen, echten Business Value aus ihren Produktionsumgebungen zu ziehen. Als Teil dieses Prozesses liegt mein Fokus auf der DevOps Automatisierung, Container und Container-Orchestrierung.

Dein Docker-Tipp:

Ich organisiere ein Meetup, in dem ich mit vielen Entwicklern und Admins aus dem Software-Betrieb zusammentreffe. Dabei sind regelmäßig Leute, die Docker einsetzen wollen aber entweder denken, dafür keine Zeit zu haben, oder nicht klar definieren können, aus welchen geschäftsrelevanten Gründen sie Docker einsetzen sollten. Mein Rat an Unternehmen lautet, Entwicklern die Freiheiten zu geben, um neue Technologien auszuprobieren – und das gilt für alle neuen Technologoen, nicht nur für Docker. Bei Docker handelt es sich um ein Tool, dessen Vorteile nicht zu 100 Prozent erkannt werden, wenn man es nicht selbst ausprobiert hat. Erst beim Experimentieren sieht man, wie man im jeweils eigenen Kontext von Docker profitieren kann.
x

Docker Tipp #9

Nicolas De Loof ist Docker-Enthusiast bei CloudBees. @ndeloof

Wie setzt du Docker ein?

Nicolas De Loof: Für meine persönlichen Projekte nutze ich Docker für zahlreiche Tests, bei denen ich sicherstelle, eine reproduzierbare Umgebung aufzusetzen, die ich mit anderen teilen kann. Außerdem verhindere ich so, dass die Umgebung irgendwelche Auswirkungen auf meine Workstation hat. Mein Unternehmen bietet eine Docker-basierte CI/CD-Lösung an “CloudBees Jenkins Enterprise”- und als Docker-Experte kümmere ich mich darum, dass hier die besten Docker Features mit einfließen.

Dein Docker-Tipp:

Wenn man sich unveränderliche (immutable) Infrastrukturen anschaut, so gibt es viele Middleware-Systeme, die das Filesystem als Cache benutzen, was man vielleicht vermeiden möchte. Ich beschränke das gerne, indem ich sie als Read-only Container (docker run –read-only) laufen lasse, um genau zu wissen, wo sie auf das Filesystem zugreifen müssen. Dann lege ich einen Ordner für das Persistent Data Directory an und ein tmpfs für alles andere, typischerweise Caches oder Logfiles.
x
x

Docker Tipp #10

Lorenzo Fontana ist DevOps-Experte bei Kiratech. @fntlnz

Wie setzt du Docker ein?

Lorenzo Fontana: Mein Unternehmen schreibt eine Open-Source-Lösung für Docker und andere Container-Technologien. Außerdem bin ich täglich mit Docker beschäftigt, um Reviews von Issues und PRs vorzunehmen. Ich bin zudem viel als Consultant unterwegs, um Unternehmen dabei zu helfen, Container und damit auch Docker einzusetzen. Ein Zeit lang habe ich Docker genutzt, um GUI Software auf meinem Computer zu installieren, bevor ich dann zu systemd-nspawn gewechselt bin. Bald werde ich mich wahrscheinlich mit runc auseinandersetzen.

Dein Docker-Tipp:

Nicht viele Leute kennen schon die Möglichkeiten für Multistage Builds. Eine zweite coole Sache ist, dass Docker jetzt auch configs und secrets verwalten kann. Zudem passiert gerade viel auf der Seite der Implementierungen: Schaut euch die Projekte unter Docker oder Moby auf GitHub an – viele Implementierungen können euch die Augen öffnen, um zu verstehen, wie die Dinge funktionieren.x
x
x

Docker Tipp #11

Brian Christner ist Cloud Advocate und Cloud-Architekt für Swisscom. @idomyowntricks

Wie setzt du Docker ein?

Brian Christner: Ich nutze Docker persönlich für jedes neue Projekt, an dem ich arbeite. Mein Blog läuft mit Docker, genauso wie meine Monitoring-Projekte, mit denen ich IoT-Anwendungen für RaspberryPis entwickle. In meinem Unternehmen wird Docker in diversen Teams eingesetzt. Wir nutzen Docker etwa, um unsere Lösung – eine Datenbank as a Service –  zu provisionieren. Docker ist sehr vielseitig und innerhalb unseres Unternehmens in verschiedenen Vertikals im Einsatz. Einer unserer Use Cases ist auf der Docker-Webseite beschrieben: https://www.docker.com/customers/swisscom-goes-400vms-20vms-docker

Dein Docker-Tipp:

Ich habe eine Reihe von Docker-Tipps auf meinem Blog www.brianchristner.io veröffentlicht. Schaut vorbei!x
x
x

Docker Tipp #12

Antonis Kalipetis ist CTO bei SourceLair, eine Docker-basierte Online-IDE. @akalipetis

Wie setzt du Docker ein?

Antonis Kalipetis: Ich nutze Docker für alle möglichen Dinge, beispielsweise, um Entwickler-Tools bei SourceLair zu entwerfen. Außerdem setze ich Docker in meinem lokalen Entwicklungs-Workflow und für das Deployment von Produktiv-Systemen für unsere Kunden ein.

Dein Docker-Tipp:

Mein Tipp ist, für Deployments grundsätzlich immer mit Docker Swarm oder einem anderen Orchestrator zu arbeiten, selbst wenn man nur ein “Cluster” von einer einzigen Maschine hat. Die Grundlagen von Swarm sind gut durchdacht und funktionieren auch einwandfrei mit nur einer Maschine. Wenn man keinen Orchestrator einsetzt, nur weil mein kein “ausreichend großes” Cluster hat, verschenkt man viele Vorteile.
x
x
x

 

Im nächsten Teil der Reihe geht es um das Potenzial der Container-Revolution, die Unterschiede zwischen Docker und herkömmlichen Virtuellen Maschinen sowie die aktuellen Entwicklungen und Trends im Container-Ökosystem.

Bleiben Sie dran!

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Hartmut Schlosser ist Redakteur und Online-Koordinator bei Software & Support Media. Seine Spezialgebiete liegen bei Java-Enterprise-Technologien, JavaFX, Eclipse und DevOps. Vor seiner Tätigkeit bei S & S Media studierte er Musik, Informatik, französische Philologie und Ethnologie.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.