Docker - Das Praxisbuch für Entwickler und DevOps-Teams

Docker - Das Praxisbuch für Entwickler und DevOps-Teams

von: Bernd Öggl, Michael Kofler

Rheinwerk Computing, 2020

ISBN: 9783836272285

Sprache: Deutsch

467 Seiten, Download: 20970 KB

 
Format:  EPUB, auch als Online-Lesen

geeignet für: geeignet für alle DRM-fähigen eReader geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Apple iPod touch, iPhone und Android Smartphones Online-Lesen


 

eBook anfordern

Mehr zum Inhalt

Docker - Das Praxisbuch für Entwickler und DevOps-Teams



2    Installation und Grundlagen


Dieses Kapitel beschreibt im Detail die Installation von Docker unter Linux, macOS und Windows. Anschließend erläutern wir die Konzepte und Grundlagen von Docker und beantworten eine Menge Fragen: Was sind Images und Container? Wie unterscheiden sie sich voneinander? Wo werden veränderliche Daten eines Containers gespeichert? Wie kommunizieren Container miteinander? Was ist die Aufgabe des Docker-Dämons? Welche Docker-Varianten gibt es?

Das Kapitel gibt eine Menge einfache Beispiele für den Einsatz des Kommandos docker. Dieses Kommando dient zur Administration von Docker-Images und -Containern. Eine systematische Referenz aller docker-Kommandos folgt in Kapitel 4.

Zuletzt gehen wir kurz auf einige Interna zur Funktionsweise von Docker unter Linux, Windows und macOS ein. Wenn es Ihnen vorerst nur um die Anwendung von Docker geht, können Sie diesen Abschnitt mit gutem Gewissen überspringen.

2.1    Installation


Dieser Abschnitt beschreibt die Installation von Docker unter drei Linux-Distributionen sowie unter macOS und unter Windows. Wir konzentrieren uns dabei auf die kostenlose Variante Docker Community (auch Community Edition genannt, kurz CE), die für eine große Anzahl von Betriebssystemen und Distributionen zur Verfügung steht.

Versionsnummern

Die Versionsnummern von Docker CE setzen sich wie bei Ubuntu aus Zahlen für Jahr und Monat zusammen – also 19.03 für die im Frühjahr 2019 fertiggestellte Version. Aber während Ubuntu-Versionen tatsächlich in dem Monat erscheinen, den die Release-Nummer angibt, trifft das bei Docker aktuell leider nicht zu. Docker 18.09 wurde im November 2018 vorgestellt, Version 19.03 im Juni 2019. Das führt die Versionsnummernlogik ad absurdum.

Bei der Fertigstellung dieses Buchs war unklar, welche Nummer die nächste Docker-Version haben würde. Wir hatten eigentlich mit Version 19.09 gerechnet, aber bis Anfang Dezember 2019 gab es davon noch nicht einmal eine Testversion. Dieses Buch berücksichtigt somit die Version 19.03.

Das kostenpflichtige Docker Enterprise (auch Enterprise Edition genannt, kurz EE) richtet sich an Unternehmenskunden, umfasst offiziellen Support und bietet diverse Zusatzfunktionen. Docker Enterprise steht nur für ausgewählte Betriebssysteme zur Verfügung, unter anderem für Windows Server, einige Linux-Enterprise-Distributionen sowie für die Cloud-Plattformen AWS und Azure. Als nicht EE-tauglich gelten beispielsweise macOS und Debian.

Der vielleicht wichtigste Vorteil von Docker Enterprise im Vergleich zur Community-Variante liegt im längeren Wartungszeitraum: Docker-CE-Versionen erscheinen in einem relativ raschen Rhythmus. Für Docker-EE-Versionen gilt dagegen ein deutlich längerer Release-Rhythmus; der Wartungszeitraum für jede Version beträgt zumindest zwei Jahre.

Die Website https://docker.com enthält zwar viel Werbung für Docker Enterprise, aber wenig konkrete Fakten. Insbesondere fehlen jegliche Preisangaben. Wenn Sie Interesse an einer EE-Lizenz haben, müssen Sie die Firma kontaktieren.

Im November 2019 wurde bekannt, dass die Firma Docker aufgespaltet wird. Während die an Entwickler gerichteten Funktionen (Docker Enterprise, Docker Hub) bei der ursprünglichen Firma bleiben, übernimmt die Cloud-Firma Mirantis das Enterprise-Segment.

Installation unter Linux


Docker wurde ja ursprünglich für den Einsatz unter Linux entwickelt. Insofern verwundert es ein wenig, dass eine Docker-Installation unter Windows oder macOS wesentlich einfacher vonstattengeht als bei manchen Linux-Distributionen. Dafür gibt es zweierlei Gründe:

  • Firmenpolitik: Red Hat hat Docker ursprünglich gut unterstützt und in RHEL 7 integriert. Mittlerweile setzt Red Hat aber auf eine Eigenentwicklung zur Ausführung von Containern (siehe Anhang A, »Docker-Alternative Podman«). Damit ist leider auch die Motivation gesunken, für Docker ein optimales Umfeld zu bieten.

  • Netzwerktechnik: Die Integration von Docker-Containern in das Netzwerk ist technisch gesehen nicht ganz trivial. Docker verwendet das Kommando iptable zum Aufstellen und Verändern von Netzwerkregeln. Dieses Kommando (oder alternativ das neue Kommando nft) wird je nach Distribution aber auch verwendet, um den Rechner mit Firewall-Regeln zu schützen. Das kann zu Konflikten führen – oder dazu, dass die durch die Firewall vorgesehene Absicherung durch Docker wieder zunichtegemacht wird.

    Die naheliegende Lösung besteht darin, die Firewall einfach zu deaktivieren. Auf Entwicklerrechnern ist das oft akzeptabel, im Produktionsalltag hingegen kaum. (Ein Sonderfall liegt vor, wenn die Docker-Hosts in einer Cloud-Umgebung laufen, die selbst durch Firewalls geschützt ist; dann erübrigt sich eine interne Firewall zumeist.)

Bei der Arbeit an diesem Buch haben wir zumeist Debian oder Ubuntu verwendet. Die Installation von Docker gelingt dort mühelos. Da beide Distributionen per Default auf eine Firewall verzichten, gibt es auch auf dieser Ebene wenig Probleme.

Vermeiden Sie Docker aus den Paketquellen der Distribution

Manche Linux-Distributionen bieten Docker-Pakete auch im Rahmen der distributionseigenen Paketquellen an. Diese Docker-Pakete sind allerdings oft vollkommen veraltet.

Unabhängig davon, unter welcher Linux-Distribution Sie arbeiten, sollten Sie stets die offiziellen Pakete vorziehen. Während der Installation wird jeweils eine Docker-eigene Paketquelle eingerichtet, aus der Sie in der Folge automatisch alle Docker-Updates beziehen.

Installation unter Ubuntu


Unter Ubuntu installieren Sie zuerst ein paar Basispakete und laden dann mit curl den Schlüssel für die neue Docker-Paketquelle herunter, die Sie mit add-apt-repository einrichten. Nach der Installation von Docker durch apt install wird das Programm automatisch gestartet. (Alle Kommandos sind mit root-Rechten auszuführen. Stellen Sie also sudo voran, oder wechseln Sie vorher mit sudo -s in den root-Modus.)

apt -y install apt-transport-https ca-certificates curl \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
apt-key add -
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable"
apt install docker-ce

Falls Sie eine ganz neue Ubuntu-Version verwenden, kann es sein, dass Docker noch keine Pakete im release-Zweig zur Verfügung stellt. Dann müssen Sie auf den edge-Zweig mit der aktuellen Beta-Version von Docker ausweichen. Die Vorgehensweise ist wie oben, allerdings sieht das Kommando add-apt-repository ein wenig anders aus:

add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable"

Wenn Sie Pech haben, gibt es für Ihre Ubuntu-Version noch gar keine Docker-Paketquellen. In diesem Fall entfernen Sie die nicht funktionierenden Docker-Paketquellen vom Ende der Datei /etc/apt/sources.list und testen dann, ob die Installation der Pakete der vorigen Ubuntu-Version klappt. Wir haben z.B. unter Ubuntu 19.10 die Docker-Pakete für Ubuntu 19.04 installiert. Im folgenden Kommando ist disco der Paketquellenname für Ubuntu 19.04 Disco Dingo:

add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
disco stable"

Falls Sie unter Ubuntu die Firewall UFW verwenden, können Docker-Container keine Netzwerkbrücke nutzen. Schuld ist die Defaulteinstellung von UFW, die die Weiterleitung von IP-Paketen unterbindet. Abhilfe: Führen Sie die folgende Änderung in /etc/default/ufw durch, und starten Sie die Firewall dann mit ufw reload neu.

# Datei /etc/default/ufw
...
DEFAULT_FORWARD_POLICY="ACCEPT"

Damit Sie in Zukunft ohne root-Rechte in Ihrem normalen Account Docker-Kommandos ausführen können, sollten Sie Ihren Account zur docker-Gruppe hinzufügen:

usermod -aG docker <username>

Beachten Sie, dass die Gruppenänderung erst nach einem neuerlichen Login wirksam wird. Berücksichtigen Sie außerdem, dass die scheinbar harmlose Gruppenzuordnung dem betreffenden Benutzer indirekt root-Rechte gibt (siehe Abschnitt 2.5, »Ein Blick hinter die Kulissen«).

Debian

Die Installation unter Debian verläuft ganz ähnlich wie unter Ubuntu, einzig der Name der Paketquelle lautet anders. Die Details können Sie hier nachlesen:

https://docs.docker.com/install/linux/docker-ce/debian

Installation unter CentOS


Sollten Sie noch mit CentOS 7 oder RHEL 7 arbeiten, gelingt die Installation der Docker-Pakete mühelos:

...

Kategorien

Service

Info/Kontakt