Docker ist eine Softwareentwicklungsplattform für die Virtualisierung mit mehreren Betriebssystemen, die auf demselben Host laufen. Sie hilft dabei, Infrastruktur und Anwendungen zu trennen, um Software schnell bereitstellen zu können. Im Gegensatz zu Hypervisoren, die für die Erstellung von virtuellen Maschinen (VM) verwendet werden, erfolgt die Virtualisierung in Docker auf Systemebene, auch Docker-Container genannt.
Möchtest du lernen, wie du deine Anwendungen schnell und problemlos mit Docker bereitstellen kannst? Bist du daran interessiert, den Prozess der Software-Entwicklung zu beschleunigen und gleichzeitig die Komplexität der Bereitstellung zu reduzieren? Dann ist unser Online-Kurs zu Docker genau das Richtige für dich!
In unserem umfassenden über 17 stündigen Docker-Kurs lernst du alles, was du über Docker wissen musst, um deine Entwicklungsarbeit auf ein neues Level zu heben. Egal, ob du ein erfahrener Entwickler bist oder gerade erst in die Welt der Containerisierung einsteigst, dieser Kurs bietet dir das nötige Wissen, um Docker erfolgreich in deinem Projekt einzusetzen.
Inhalt des Kurses:
- Was ist Docker?
- Verstehe die Grundlagen und Konzepte hinter Docker und wie es die Software-Entwicklung revolutioniert hat.
- Warum Docker verwenden?
- Erfahre, welche Vorteile die Verwendung von Docker mit sich bringt und wie es die Effizienz deiner Entwicklung steigern kann.
- Die Docker-Architektur
- Tauche ein in die Architektur von Docker und verstehe, wie die verschiedenen Komponenten zusammenarbeiten, um Container zu erstellen und auszuführen.
- Docker-Engine
- Erfahre alles über die Docker-Engine, die Kernkomponente von Docker, und wie du sie effektiv nutzen kannst.
- Docker-Builder
- Lerne den Docker-Builder kennen und entdecke, wie du benutzerdefinierte Docker-Images erstellen kannst, um deine Anwendungen optimal zu konfigurieren.
- Docker-Registry
- Erfahre, wie du Docker-Images in einer Docker-Registry speichern und verwalten kannst, um sie einfach für andere Entwickler zugänglich zu machen.
- Docker-Container
- Entdecke die Vielseitigkeit von Docker-Containern und lerne, wie du sie erstellst, ausführst und verwaltest, um deine Anwendungen effizient zu betreiben.
- Installation von Docker unter Linux/Ubuntu
- Erhalte eine Schritt-für-Schritt-Anleitung zur Installation von Docker auf deinem Linux- oder Ubuntu-System, damit du sofort mit dem Entdecken von Docker loslegen kannst.
- Grundlegende Docker-Befehle
- Lerne wichtige Docker-Befehle kennen und erfahre, wie du sie richtig einsetzt, um Container zu erstellen, zu starten, zu stoppen und zu verwalten.
- Das Linux 1 x 1
- Lerne die notwendigen Linux Grundlagen kennen für den Betrieb von Docker in einer echten Umgebung.
Cedric Mössner alias Morpheus Tutorials und ich (Rene Fürst), führen wir dich durch jede Lektion des Kurses und stellen sicher, dass du alle Konzepte und Techniken vollständig verstehst. Darüber hinaus bieten wir Übungen und praktische Beispiele, um dein Wissen zu festigen und dir beim Erwerb von praktischen Fähigkeiten zu helfen.
Starte noch heute deine Docker-Reise und melde dich für unseren Online-Kurs an! Werde zum Docker-Experten und optimiere deine Software-Entwicklung wie nie zuvor.
Warum sollte man Docker verwenden?
- Docker ist eine Computersoftware, die zur Virtualisierung verwendet wird, um mehrere Betriebssysteme auf demselben Host laufen zu lassen.
- Docker ist eine Client-Server-Anwendung, d.h. wir haben Clients, die sich an den Server wenden.
- Docker-Images sind der "Quellcode" für unsere Container; wir benutzen sie zum Bauen
- Dockerfile hat zwei Arten von Registries: öffentliche und private Registries
- Container sind die organisatorischen Einheiten von Docker-Volumes. Einfach ausgedrückt ist ein Image eine Vorlage und ein Container eine Kopie dieser Vorlage. Du kannst mehrere Container (Kopien) desselben Images haben.
Die Docker-Achitektur
In diesem Abschnitt wollen wir über die wichtigsten Komponenten der Docker-Architektur sprechen:
Docker-Engine
Docker ist eine Client-Server-Anwendung, d.h. wir haben Clients, die sich an den Server wenden. Der Docker-Daemon namens dockerd ist also die Docker-Engine, die den Server darstellt. Der Docker-Daemon und die Clients können auf demselben oder einem entfernten Host laufen und kommunizieren über eine Kommandozeilen-Client-Binärdatei sowie über eine vollständige RESTful-API, um mit dem Daemon zu interagieren: dockerd.
Docker-Images
Docker-Images sind der "Quellcode" für unsere Container. Wir verwenden sie, um Container zu erstellen. Auf ihnen kann Software vorinstalliert sein, was die Bereitstellung beschleunigt. Sie sind portabel, und wir können vorhandene Images verwenden oder eigene erstellen.
Docker-Registry
Docker speichert die von uns erstellten Images in Registries. Es gibt öffentliche und private Registries. Die Firma Docker hat ein öffentliches Register namens Docker Hub, in dem du auch private Images speichern kannst. Docker Hub hat Millionen von Images, die du sofort nutzen kannst.
Docker-Container
Container sind die Organisationseinheiten und eines der grundlegenden Konzepte von Docker. Wenn wir ein Image erstellen und es ausführen, befinden wir uns in einem Container. Die Container-Analogie wird wegen der Portabilität der Software verwendet, die wir in unserem Container laufen lassen. Wir können sie verschieben, mit anderen Worten, die Software "verschiffen", verändern, verwalten, erstellen oder loswerden, sie zerstören, genau wie Frachtschiffe es mit echten Containern tun können.
Einfach ausgedrückt: Ein Image ist eine Vorlage und ein Container ist eine Kopie dieser Vorlage. Du kannst mehrere Container (Kopien) desselben Bildes haben.
Unten sehen wir ein Image, das die Interaktion zwischen den verschiedenen Komponenten und die Funktionsweise der Docker-Containertechnologie perfekt darstellt.
Wir haben mehrere Docker-Befehle: Docker Pull, Docker Run… die wir uns noch ansehen werden.
So installierst du Docker unter Linux/Ubuntu
Im Folgenden wird der Installationsprozess von Docker unter Linux/Ubuntu Schritt für Schritt beschrieben:
Schritt 1: Um Docker zu installieren, müssen wir die DEB-Pakete des Docker-Teams verwenden.
Dafür werden einige Ubuntu-Pakete benötigt.
Verwende den folgenden Befehl, um die Ubuntu-Pakete zu installieren:
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
Schritt 2: Füge den offiziellen Docker GPG-Schlüssel mit dem Fingerabdruck hinzu.
Verwende den folgenden Docker-Befehl, um den GPG-Schlüssel einzugeben:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Schritt 3: Als nächstes fügst du das Docker APT Repository hinzu.
Verwende den folgenden Docker-Befehl, um das Repository hinzuzufügen:
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Möglicherweise wirst du aufgefordert, zu bestätigen, dass du das Repository hinzufügen möchtest und dass der GPG-Schlüssel automatisch zu deinem Host hinzugefügt wird.
Der Befehl lsb_release sollte die Version der Ubuntu-Distribution deines Hosts ausfüllen.
Schritt 4: Nachdem du den GPG-Schlüssel hinzugefügt hast,
Aktualisiere die APT-Quellen mit dem folgenden Docker-Befehl:
$ sudo apt-get update
Jetzt können wir das Docker-Paket selbst installieren.
Schritt 5: Sobald die APT-Quellen aktualisiert sind,
Starte die Installation der Docker-Pakete auf Ubuntu mit dem folgenden Docker-Befehl:
$ sudo apt-get install docker-ce
Der oben genannte Befehl installiert Docker und andere zusätzlich benötigte Pakete. Vor Docker 1.8.0 lautete der Paketname lxc-docker, und zwischen Docker 1.8 und 24 lautete der Paketname docker-engine.
HINWEIS: Docker für Windows benötigt Windows 10 Pro oder Enterprise Version 14393 oder Windows Server 2016 RTM, um zu funktionieren.
Wie man Docker mit einfachen Docker-Befehlen benutzt
Hier erfährst du, wie du Docker mit den grundlegenden Docker-Befehlen verwendest:
Der grundlegendste Befehl, den wir nach der Installation von Docker ausführen können, ist wie bereits erwähnt, docker info.
$ sudo docker info
Wie wir im obigen Docker-Beispiel sehen können, haben wir Informationen über Docker-Container, wieviele laufen, pausiert oder gestoppt sind und wieviele Images wir heruntergeladen haben. Holen wir uns also unser erstes Image in diesem Docker-Befehlstutorial.
$ sudo docker pull alpine
Mit diesem Befehl weisen wir Docker an, das Alpine-Image herunterzuladen, um es aus der öffentlichen Registry zu ziehen, und zwar in der neuesten Version, die standardmäßig eingestellt ist.
*alpine ist ein minimales Docker-Image, das auf Alpine Linux basiert, einen vollständigen Paketindex enthält und nur 5 MB groß ist.
Wenn wir das Image als Container ausführen wollen, verwenden wir den folgenden Befehl in dieser Anleitung für Docker-Tutorials.
$ sudo docker run -i -t alpine /bin/bash
Wenn wir den Befehl ausführen, werden wir direkt an das Terminal von Alpine weitergeleitet. Das Flag -i hält STDIN vom Container offen, auch wenn du nicht mit ihm verbunden bist. Diese dauerhafte Standardeingabe ist die eine Hälfte dessen, was du für eine interaktive Shell brauchst. Das Flag -t ist die andere Hälfte und weist Docker an, dem Container ein Pseudo-Tty zuzuweisen. Dadurch erhalten wir eine interaktive Shell in dem neuen Container. Wir beenden den Container mit einem einfachen exit-Befehl.
Nun können wir nun versuchen, ein Ubuntu-Image zu starten.
$ sudo docker run -it ubuntu /bin/bash
Wie du siehst, sucht Docker nach dem lokalen Image und wenn es nicht vorhanden ist, wird das Image automatisch aus der Image-Bibliothek gezogen und wir haben wieder eine interaktive Shell. Wir können die Container auch benennen, wenn wir sie starten.
$ sudo docker run –-name our_container -it ubuntu /bin/bash
und wir beenden es wieder.
Wir können den Container, den wir zuvor erstellt haben, auch ohne interaktive Shell ausführen.
$ sudo docker start container_name
Und stoppe den Container mit docker stop container_name
$ sudo docker stop container_name
Wenn wir alle laufenden Container sehen wollen, führen wir einfach aus:
$ docker ps
Für alle Container fügen wir am Ende dieses Befehls ein "-a" hinzu, z.B. docker ps -a.
Dieser Befehl zeigt die ID des Containers, das Image, mit dem er erstellt wurde, den Status, die offenen Ports und den zufällig generierten Namen des Containers an, um die Verwaltung zu erleichtern.
Wenn wir Container laufen lassen, möchten wir auch wissen, wie viele Ressourcen sie verbrauchen, und dafür können wir diesen Befehl verwenden.
$ docker stats
Du kannst auch sehen, welche Images wir lokal heruntergeladen haben und welche Informationen wir über sie haben.
$ sudo docker images
Der Befehl im obigen Docker-Beispiel zeigt das Docker-Image mit einem Tag an, der unsere Image-Version, eine eindeutige Image-ID, das Erstellungsdatum und die Image-Größe angibt.
Was ist eine Virtualisierung?
Früher war der Prozess der Bereitstellung eines Dienstes langsam und mühsam. Zuerst schrieben die Entwicklerinnen und Entwickler den Code, dann stellte das Betriebsteam ihn auf Bare-Metal-Maschinen bereit, wo sie nach Bibliotheksversionen, Patches und Sprachcompilern Ausschau halten mussten, damit der Code funktionierte. Wenn es Bugs oder Fehler gab, fing der Prozess von vorne an, die Entwickler mussten sie beheben, und dann war wieder das Betriebsteam dran, um den Code zu verteilen.
Eine Verbesserung gab es mit der Schaffung von Hypervisors. Hypervisors haben mehrere virtuelle Maschinen (VMs) auf demselben Host, die laufen oder ausgeschaltet sein können. VMs verkürzten die Wartezeit für die Bereitstellung von Code und die Fehlerbehebung erheblich, aber der eigentliche Durchbruch waren Docker-Container.
Wichtige Docker-Befehle
Nachfolgend findest du die wichtigsten Docker-Befehle:
Befehl | Beschreibung |
docker info | Informationsbefehl |
docker pull | Ein Image herunterladen |
docker run -i -t image_name /bin/bash | Image als Container ausführen |
docker start our_container | Container starten |
docker stop container_name | Container anhalten |
docker ps | Liste aller laufenden Container |
docker stats | Container-Informationen |
docker images | Liste der heruntergeladenen Images |
Docker Cleanup | Beende alle laufenden Container. |
Zusammenfassung
- Docker ist eine Softwareentwicklungsplattform für die Virtualisierung mit mehreren Betriebssystemen, die auf demselben Host laufen. Sie hilft dabei, Infrastruktur und Anwendungen zu trennen, um Software schnell bereitstellen zu können.
- Docker-Architektur: Docker Engine, Docker Images, Docker Registries, Docker Containers.
- Docker-Engine: Docker ist eine Client-Server-Anwendung, d.h. wir haben Clients, die sich an den Server wenden. Der Docker-Daemon namens dockerd ist also die Docker-Engine, die den Server repräsentiert.
- Docker-Images: Docker-Images sind der "Quellcode" für unsere Container; wir verwenden sie, um Container zu erstellen. Auf ihnen kann Software vorinstalliert sein, was die Bereitstellung beschleunigt. Sie sind portabel und wir können vorhandene Images verwenden oder eigene erstellen.
- Docker-Registries: Docker speichert die von uns erstellten Images in Registries. Es gibt öffentliche und private Registries. Die Firma Docker hat eine öffentliche Registrierung namens Docker Hub, in der du auch private Images speichern kannst. Docker Hub hat Millionen von Images, die du jetzt nutzen kannst.
- Docker-Container: Container sind die Organisationseinheiten und eines der grundlegenden Konzepte von Docker. Wenn wir ein Image erstellen und es ausführen, befinden wir uns in einem Container. Die Container-Analogie wird wegen der Portabilität der Software verwendet, die wir in unserem Container ausführen.
Das Docker Bootcamp - Der Online Video Kurs
Entdecke Docker - der Schlüssel zur effizienten Software-Entwicklung!
Unser Online-Kurs bietet dir alles, was du über Docker wissen musst, um deine Entwicklungsarbeit zu revolutionieren. Lerne die Grundlagen, die Vorteile und die Architektur von Docker kennen. Erfahre, wie du Docker-Engine, -Builder und -Registry effektiv einsetzt. Entdecke die Vielseitigkeit von Docker-Containern und erlerne wichtige Befehle für die Installation und Nutzung unter Linux/Ubuntu.
Melde dich jetzt an und werde zum Docker-Experten! Beschleunige deine Software-Entwicklung und vereinfache die Bereitstellung von Anwendungen.