Zum Inhalt wechseln

Ein Leben ohne Docker Desktop – Aus der Perspektive eines Entwicklers

Technology

Dez 1, 2021 - 8 minuten lesen

2099 Blog Post How To Live Without Docker Desktop Blog 416X300
Objectivity Innovativer Technologieführer
Unser Spezialgebiet ist das Entwerfen, Bereitstellen und Unterstützen von IT-Lösungen, um unseren Kunden zum Erfolg zu verhelfen. Jeder unserer Schritte gehen wir innerhalb unserem ethischen Rahmen. Laut unserer Philosophie sollte jedes Kunden-Engagement zu einer Win-Win-Situation führen, unterstützend durch unsere vier Werte: Menschen, Integrität, Exzellenz und Agilität. Unsere Kunden stehen im Mittelpunkt und wir sind stolz darauf langjährige Beziehungen zu pflegen – wobei die längste bereits seit 29 Jahren hält. Unser Ziel ist es unser Geschäft weiter auszubauen und dabei den ethischen Rahmenbedingungen und Werten, auf denen wir basieren, treu zu bleiben.
Alle Beiträge von Objectivity anzeigen
V01 DE 2053 Cloud Checklist Res 385X300

Teilen

Inhaltsverzeichnis

  1. Um was geht es hier?
  2. Voraussetzungen
  3. WSL2 Installation 
  4. Docker Installation
  5. Kubernetes (Minikube) Installation - Optional 
  6. Docker und Kubernetes über Ihre PowerShell-Befehlszeile verwenden
  7. Zusammenfassung
  8. Über die Autoren

Um was geht es hier?

Laut der neuen Docker Desktop Lizenzvereinbarung erfordert die professionelle Nutzung von Docker Desktop in großen Organisationen ein kostenpflichtiges Docker-Abonnement. Wenn Ihr Unternehmen mehr als 250 Mitarbeiter beschäftigt oder einen Jahresumsatz von mehr als 10 Millionen US-Dollar erzielt, können Sie Docker Desktop grundsätzlich nicht ohne das kostenpflichtige Abonnement verwenden. Es bleibt allerdings für kleinere Unternehmen, private Nutzung, Bildungszwecke und Open-Source-Projekte kostenlos.

Es ist wichtig zu erwähnen, dass diese Änderung nur Docker Desktop betrifft, weder Docker Engine noch Docker selbst ändern ihre Lizenzen. Dies bedeutet, dass Sie Docker weiterhin für die Entwicklung und alle Arten von Umgebungen verwenden können, einschließlich der Produktionsumgebung. Daher sollte sich diese Änderung in keiner Weise auf das Geschäft Ihres Unternehmens auswirken.

Wenn Sie Entwickler sind und sich Sorgen machen, dass diese Änderung Ihre tägliche Arbeit beeinträchtigen wird, dann haben Sie keine Angst mehr! In diesem Artikel erfahren Sie, wie Sie ohne Docker Desktop die gleiche Produktivität erzielen. Darüber hinaus gibt es zusätzliche Vorteile!

Voraussetzungen

  • Sie benötigen eine WSL2-kompatible Workstation: Windows 10 Version 2004 und höher (Build 19041 und höher) oder Windows 11. Um Ihre aktuelle Windows-Version zu überprüfen: Drücken Sie die Windows-Logo-Taste + R, geben Sie winver ein und klicken Sie auf OK. Wenn Ihr System dieses Kriterium nicht erfüllt, müssen Sie Ihr Windows auf die neueste Version aktualisieren.
  • Wenn Docker für Windows bereits installiert ist, müssen Sie es deinstallieren (insbesondere dann, wenn es mit der lokalen WSL-Distribution verbunden ist).
  • Sie müssen das Linux-Subsystem aktiviert haben. Sie können dies überprüfen, indem Sie die Windows-Logo-Taste + R drücken, "Windows-Funktionen ein- und ausschalten" eingeben und beim gefundenen Eintrag auf OK klicken. Scrollen Sie in der Liste nach unten zu "Windows-Subsystem für Linux" und wählen Sie es aus, wenn es nicht ausgewählt ist. Bitte beachten Sie, dass dieser Schritt einen Systemneustart erfordert. Sie können diese Funktion auch mit dem PowerShell-Befehl aktivieren:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

WSL2 Installation 

Für diesen Vorgang müssen Sie PowerShell mit Administratorrechten ausführen. Installieren Sie das Ubuntu-Submodul im Typ WSL Version 2:

wsl --set-default-version 2
wsl --install -d Ubuntu

Hinweis:

Sie können gerne ein anderes Linux-Submodul verwenden, aber Sie müssen daran denken, die richtigen Befehle für die installierte Distribution zu verwenden.

Das kann eine Zeit dauern, bis Sie die Bestätigung sehen. Überprüfen Sie, ob Ubuntu in der 2. Version installiert wurde, indem Sie diesen Befehl acodeusführen:

wsl -l -v

Sie sollten Ihren installierten Ubuntu mit der WSL Version sehen. Falls es in der 1. Version installiert wurde, können Sie dies mit dem folgenden Befehl ändern:

wsl --set-version Ubuntu-XX.YY 2

XX. YY ist die installierte Ubuntu Release-Version (momentan 20.04).

Docker Installation

Grundsätzlich müssen Sie nur die offiziellen Schritte für Ihre spezielle Distribution befolgen. Für Ubuntu: https://docs.docker.com/engine/install/ubuntu/

Sie können auch das folgende Skript in Ihre x-Konsole kopieren. Fügen Sie es entweder in eine Datei wie install-docker.sh oder direkt in die Konsole ein. Außerdem fügen Sie jeden Befehl separat in der gleichen Reihenfolge ein:

#/bin/bash 

# 1. Required dependencies 
sudo apt-get update 
sudo apt-get -y install apt-transport-https ca-certificates curl gnupg lsb-release 

# 2. GPG key 
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 

# 3. Use stable repository for Docker 
echo \ 
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ 
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 

# 4. Install Docker 
sudo apt-get update 
sudo apt-get -y install docker-ce docker-ce-cli containerd.io 

# 5. Add user to docker group 
sudo groupadd docker 
sudo usermod -aG docker $USER 

Hier eine detaillierte Liste der nötigen Aktionen:

  • Schritt 1: Aktualisieren Sie das System und installieren Sie die erforderlichen Abhängigkeiten. Dadurch erhält Ihr frisch installiertes System ein allgemeines Update und einige Tools, welche für Docker und in den nächsten Schritten benötigt werden.

 

  • Schritt 2: GPG-Schlüssel. Um ein stabiles Docker-Repository zu verwenden, müssen Sie Ihrer Linux-Umgebung mitteilen, dass Sie diesem Docker-Repository vertrauen.

 

  • Schritt 3. Fügen Sie ein stabiles Repository für Docker hinzu. Das Ubuntu-System verwendet Debian-ähnliche Repositorys mit Software. Sie können viele Repositorys von verschiedenen Anbietern hinzufügen, um deren jeweilige Software zu installieren.

 

  • Schritt 4. Docker installieren. Endlich!

 

  • Schritt 5. Fügen Sie der Docker-Gruppe einen Benutzer hinzu. Wenn Sie Docker jemals direkt aus dem Linux-Submodul verwenden müssen, möchten Sie, dass Ihr lokaler Benutzer dazu berechtigt ist.

Sie werden nach dem Linux Root (Admin) Passwort gefragt. Der gesamte Prozess kann eine Weile dauern, es ist also jetzt die beste Zeit für eine Tasse Kaffee! 

Als nächstes starten wir den Docker Service und prüfen, ob alles glatt gelaufen ist:

sudo service docker start

sudo service docker status

docker run hello-world

Am Ende der Skriptausführung sollten Sie sehen, dass das Docker-Image reibungslos lief:

Hello from Docker! 
This message shows that your installation appears to be working correctly. 

To generate this message, Docker took the following steps: 
1. The Docker client contacted the Docker daemon. 
2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 
    (amd64) 
3. The Docker daemon created a new container from that image which runs the 
    executable that produces the output you are currently reading. 
4. The Docker daemon streamed that output to the Docker client, which sent it 
    to your terminal. 

To try something more ambitious, you can run an Ubuntu container with: 
$ docker run -it ubuntu bash 

Share images, automate workflows, and more with a free Docker ID: 
https://hub.docker.com/ 

For more examples and ideas, visit: 
https://docs.docker.com/get-started/ 

Kubernetes (Minikube) Installation - Optional 

Falls Sie eine K8s Umgebung brauchen, können Sie alles über das offizielle Kube Tutorial installieren: https://minikube.sigs.k8s.io/docs/start/. Derzeit ist es für Ubuntu sehr einfach – Sie fügen nur diese zwei Befehle ein:

curl -LO
https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

 

Um Ihre Minikube Instanz zu starten, folgendes eingeben (das kann auch etwas dauern):

Minikube start

Jetzt sollten Sie das Startprotokoll des Minikube-Clusters sehen:

Um nun zu prüfen, ob Ihr Cluster korrekt läuft, folgendes eintippen:

minikube status

Sie sollten etwas ähnliches sehen:

minikube
type: Control Plane 
host: Running 
kubelet: Running 
apiserver: Running 
kubeconfig: Configured

Docker und Kubernetes über Ihre PowerShell-Befehlszeile verwenden

Bis dahin sollten Sie folgendes erreicht haben: 

  • WSL2 Linux Subsystem installiert. 
  • Installierter & konfigurierter Docker in der gewählten Linux Distribution. 
  • (Optional) Installierter & konfigurierter Minikube Cluster in der gewählten Linux Distribution. 

Dies bedeutet, dass Sie alle Docker-, Minikube- und kubectl-Befehle in Ihrem Linux-Terminal verwenden können. Sie können alle diese Befehle auch von PowerShell aus verwenden, indem Sie dem Befehl „wsl“ voranstellen. Zum Beispiel:

wsl docker ps
wsl minikube status
wsl minikube kubectl -- get pods -A

Es wäre viel bequemer, wenn Sie es verwenden könnten, ohne hier und da zu sagen, dass Sie bei diesen Befehlen wsl verwenden werden. Es gibt eine einfache Problemumgehung, um dies zu erreichen, indem Sie Aliase für Ihre PowerShell erstellen. Bitte beachten Sie, dass Sie für diesen Schritt ein PowerShell-Profilskript erstellen müssen (hier können Sie mehr darüber lesen), sodass Sie über die Berechtigungen zum Ausführen dieser Skripts verfügen müssen. Es besteht die Möglichkeit, dass Sie die Ausführungsrichtlinie eingeschränkt haben und dieses Skript nicht ausführen können. Um diese Ausführung zu überprüfen, geben Sie Ihre PowerShell ein (mit Administratorrechten):

Get-ExecutionPolicy -List

 

Das Ergebnis dieses Befehls sollte folgendes sein:

Scope                    ExecutionPolicy
-----                    ---------------
MachinePolicy            Undefined
UserPolicy               Undefined
Process                  Undefined
CurrentUser              AllSigned
LocalMachine             Undefined

Wir interessieren uns für den LocalMachine-Scope. Wenn es nicht definiert oder eingeschränkt ist, müssen Sie die Ausführung der RemoteSigned-Skripte zulassen. Sie können dies erreichen, indem Sie Folgendes eingeben:

Set-ExecutionPolicy RemoteSigned

Jetzt sind wir bereit für den letzten Schliff und müssen den Inhalt des Profilstartskripts ändern. Um den Pfad für dieses Skript zu finden, geben Sie Ihre PowerShell ein (ohne Administratorrechte – wir interessieren uns jetzt für Ihre Konsole):

echo $PROFILE

Im Gegenzug erhalten Sie einen Pfad zu Ihrem Startskript. Etwas wie das:

C:\Users\dpokusa\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

 

Öffnen Sie diese Datei in Ihrem bevorzugten Editor und fügen Sie diesen Inhalt ein:

Function Start-WslDocker {
    wsl docker $args
}
 
Function Start-WslMinikube {
    wsl minikube $args
}
 
Function Start-WslKubectl {
    wsl minikube kubectl -- $args
}
 
Set-Alias -Name docker -Value Start-WslDocker
Set-Alias -Name minikube -Value Start-WslMinikube
Set-Alias -Name kubectl -Value Start-WslKubectl

Sie sehen 3 Aliase für:

  • Docker
  • Minikube
  • Kubectl

Sie können mehr davon erstellen, indem Sie denselben Ansatz anwenden und eine engere Verbindung zwischen Ihrer PowerShell und Ihrem lokalen Linux-Submodul herstellen. Speichern Sie diese Datei und starten Sie Ihr PowerShell-Terminal neu. Jetzt können Sie genau die gleichen Befehle wie unter Linux verwenden:

docker images

kubectl get all

minikube dashboard

Zusammenfassung

Geschafft! Der Prozess scheint, auf den ersten Blick, kompliziert zu sein aber, wenn Sie genau hinsehen, ist es ziemlich einfach und in 3 grundlegende Schritte aufgeteilt:

  1. Installieren eines WSL2-Linux-Submodul der Wahl.
  2. Installieren von Docker und optional einem lokalen Kubernetes-Cluster wie Minikube oder eine andere Lösung.
  3. Vorbereiten eines Profilskripts für Ihre lokale PowerShell.

Was kommt als nächstes? Sicherlich ist es nicht so einfach wie Docker Desktop. Wenn Sie also einen Kauf in Betracht ziehen, empfehlen wir Ihnen, Ihren eigenen Anwendungsfall zu bedenken. Und nichts kann Sie davon abhalten, zusätzliche Tools zu installieren, die Ihre tägliche Arbeit mit k8s und Docker vereinfachen. Sie können beispielsweise die Verwendung von https://www.potainer.io/ in Betracht ziehen (die Community Edition für geschäftliche Zwecke), um Ihre Bilder, Volumen und Container ohne den Aufwand einer CLI zu verwalten. Wenn Sie eine eher terminalorientierte Person sind, können Sie Docker direkt oder über Tools wie Lazydocker verwenden (Sie können es auch zu Ihrem PowerShell-Profilskript hinzufügen!). Es sind keine Grenzen gesetzt!

Lassen Sie uns die Vor- und Nachteile der beschriebenen Lösung durchgehen, um diese Überlegungen zu erleichtern:

 

Vorteile

  • Die Docker-Engine ist kostenlos, sodass die gesamte Lösung ohne Kosten- und Lizenzverwaltung verfügbar ist.
  • Sie können jede verfügbare Software verwenden, um Ihren Docker- und Kubernetes-Cluster wie Portainer oder Lazydocker zu verwalten.
  • Es ist ganz einfach, eine native CLI zu verwenden und die Docker-Grundlagen zu erlernen, damit Sie mehr DevOps-Kompetenzen erwerben können.
  • Viele Produktionsumgebungen laufen unter Linux, sodass die Verwendung der Linux Docker-Installation die Entwicklungsumgebung in solchen Fällen eher produktionsähnlich macht.

 

Nachteile

  • Es erfordert Konfiguration und ein wenig Linux-Kenntnisse.
  • Außerdem ist ein PowerShell-Profilskript erforderlich (wenn Ihre Organisation Ihnen keine Berechtigung zum Ausführen erteilt, können Sie keine PS-Aliase erstellen).
  • Auch wenn Sie zusätzliche Tools zur Wartung Ihres Docker/k8s-Clusters verwenden, liegt es in Ihrer Verantwortung, die gesamte Umgebung zu aktualisieren und zu warten.

 

Über die Autoren

 

Daniel Pokusa  
Technical Architect 

Technischer Architekt fasziniert von Automatisierung, Lean-Methoden, Qualität und Effizienz im Arbeitsalltag. Täglich in Kontakt mit JVM-Sprachen. Redner bei IT-Konferenzen und IT-bezogenen Veranstaltungen (wie Confitura, 4Developers, Java Developer Days, Boiling Frogs, QualityExcites und mehr). Er glaubt, dass die wichtigsten Dinge in der Softwareentwicklung eine gute Kommunikation, Zusammenarbeit und Wissensaustausch sind.

 

Patryk Lotzwi 
Senior DevOps Engineer 

DevOps, Programmierer, Automatisierungsfan. Ein aktives Mitglied von Tech-Communitys, das an Konferenzen teilnimmt. Er ist der DevOps Practice Lead bei Objectivity. In seiner Freizeit spielt Patryk Videospiele, schaut sich Superheldenfilme an oder entwickelt ein weiteres Smart-Home-Projekt.

V01 DE 2053 Cloud Checklist Res 385X300
Objectivity Innovativer Technologieführer
Unser Spezialgebiet ist das Entwerfen, Bereitstellen und Unterstützen von IT-Lösungen, um unseren Kunden zum Erfolg zu verhelfen. Jeder unserer Schritte gehen wir innerhalb unserem ethischen Rahmen. Laut unserer Philosophie sollte jedes Kunden-Engagement zu einer Win-Win-Situation führen, unterstützend durch unsere vier Werte: Menschen, Integrität, Exzellenz und Agilität. Unsere Kunden stehen im Mittelpunkt und wir sind stolz darauf langjährige Beziehungen zu pflegen – wobei die längste bereits seit 29 Jahren hält. Unser Ziel ist es unser Geschäft weiter auszubauen und dabei den ethischen Rahmenbedingungen und Werten, auf denen wir basieren, treu zu bleiben.
Alle Beiträge von Objectivity anzeigen

Was Sie noch interesieren könnte

Kontakt

Starten Sie Ihr Projekt mit Objectivity

CTA Pattern - Contact - Middle

Wir verwenden erforderliche Cookies für die Funktionalität unserer Website, sowie optionale Cookies zur Analyse, Leistung und/oder für Marketingzwecke. Das Sammeln und Berichten von Information durch optionale Cookies hilft uns dabei unsere Website zu verbessern und Ihnen Informationen über uns und unser Angebot zukommen zu lassen. Weitere Informationen und das Aussetzen von Cookies, finden Sie in unseren Cookie-Einstellungen.