Ich habe mich nach einer kleinen Testphase gegen GitKraken und für Fork als grafischen Client für Git unter macOS entschieden.Gitkraken mag ein hervorragendes Werkzeug sein, aber das Abomodell hat mich abgeschreckt. Ich möchte noch erwähnen, dass GitKraken ein Studenten- und Universitätspaket anbietet. Ich werde vielleicht GitKraken Kollegen:innen an meinem Arbeitsplatz für einen Test vorschlagen. Dann ... Weiterlesen
Ein neuer adminForge Service kann ab sofort genutzt werden. Ein Heim für deinen Code – deine Projekte. Git Ein Heim für deine Projekte. https://git.adminforge.de Features: Organisationen erstellen Repositories erstellen Mirrored Repo zu bspw. GitHub...
Docker Desktop ist eine grafische Benutzeroberfläche zu Docker, die manche administrative Aufgaben erleichtert. Ursprünglich stand das Programm nur für Windows und macOS zur Verfügung. Seit Mai 2022 gibt es den Docker Desktop auch für Linux. Für diesen Blog-Artikel habe ich das Programm unter Ubuntu 22.04 kurz ausprobiert. Soviel vorweg: Aufgrund diverser Nachteile gibt es wenig zwingende Gründe, die für den Einsatz sprechen.
Installation
Ich habe meine Tests unter Ubuntu 22.04 durchgeführt. Auf dem Rechner waren bisher keine Docker-Pakete installiert. Beachten Sie, dass der Docker Desktop keine Erweiterung zu einer vorhandenen Docker-Installation ist. Vielmehr sollten Sie diese vollständig entfernen, bevor Sie mit der Installation beginnen!
Bevor Sie den Docker Desktop installieren können, müssen Sie die Docker-eigene Paketquelle einrichten (Quelle):
Absurderweise enthält diese Paketquelle zwar diverse Docker-Pakete, nicht aber den Docker Desktop. Den müssen Sie manuell als DEB-Paket von der folgenden Seite herunterladen. (Der Grund für diese umständliche Vorgehensweise sind vermutlich die abweichenden Lizenzen. Der Docker Desktop steht zwar Privatanwendern kostenlos zur Verfügung. Es handelt sich aber nicht um Open-Source-Code. Für den kommerziellen Einsatz sind je nach Unternehmensgröße Lizenzgebühren erforderlich.)
Zum Ende der Installation wird eine Warnung angezeigt, die Sie aber ignorieren können:
N: Der Download wird als root und nicht Sandbox-geschützt durchgeführt,
da auf die Datei »/home/kofler/Downloads/docker-desktop-4.9.0-amd64.deb«
durch den Benutzer »_apt« nicht zugegriffen werden kann.
pkgAcquire::Run (13: Keine Berechtigung)
Betrieb
Im Startmenü bzw. unter Gnome mittels Aktivitäten führen Sie den Docker Desktop nun aus. Der Startvorgang dauert eine Weile. Anschließend können die Kommandos docker und docker compose wie üblich in einem Terminalfenster ausgeführt werden. Docker wurde so eingerichtet, dass das Kommando ohne sudo funktioniert. Den Containern wird standardmäßig eine Netzwerkverbindung in einem privaten Netzwerk in 172.*.*.* zugewiesen.
docker run -it --rm alpine
<alpine># ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN qlen 1000
link/tunnel6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
Nachdem die Hürden der Installation einmal überwunden waren, hat Docker ausgezeichnet funktioniert. Im Vergleich zur reinen Verwendung des Kommandos docker hilft der Docker Desktop beim Einstieg in die Container-Welt sowie bei der Verwaltung aller jemals ausgeführten Container, aller heruntergeladenen Images sowie der von den Container genutzten Volumes. Wirklich essentiell ist keine dieser Funktionen, aber natürlich erleichtern sie die ersten Schritte.
Interna
Hinter den Kulissen ist für die Ausführung der Docker-Container eine virtuelle Maschine zuständig, die vom Docker Desktop automatisch gestartet wird. Auf meinem Rechner mit 16 GByte RAM und einer CPU mit 4 Cores hat der Docker Desktop für sich knapp 4 GByte RAM und 2 Cores reserviert. Für das Disk Image der Maschine sind 64 GByte vorgesehen. (Anfänglich ist die Datei aber zum Glück wesentlich kleiner.) QEMU-Experten können sich in der Prozessliste die Optionen ansehen, die für die Ausführung der virtuellen Maschine verwendet werden.
Der Docker Desktop samt seiner virtuellen Maschine läuft ohne root-Rechte als Prozess des lokalen Benutzers.
systemctl --user status docker-desktop
docker-desktop.service - Docker Desktop
Loaded: loaded (/usr/lib/systemd/user/docker-desktop.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2022-06-09 13:13:50 CEST; 9min ago
Main PID: 40088 (com.docker.back)
Tasks: 157 (limit: 18937)
Memory: 5.8G
docker version
Client: Docker Engine - Community
Cloud integration: v1.0.25
Version: 20.10.17
API version: 1.41
...
Context: desktop-linux
Experimental: true
Server: Docker Desktop 4.9.0 (80466)
Engine:
Version: 20.10.16
API version: 1.41 (minimum version 1.12)
...
containerd:
Version: 1.6.4
GitCommit: 212e8b6fa2f44b9c21b2798135fc6fb7c53efc16
runc:
Version: 1.1.1
GitCommit: v1.1.1-0-g52de29d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Die Eckdaten der virtuellen Maschine können in der Oberfläche des Docker Desktops verändert werden.
Zukunftsvisionen: »Development Environments« versus »Development Containers«
Spannend ist eine neue Funktion, die aktuell aber erst im Preview-Stadium vorliegt: Development Environments (Link zur Dokumentation) sollen es im Zusammenspiel mit git noch einfacher machen, Testversionen bzw. Entwicklungszweige (git-Branches) im Team auszuprobieren — und das, ohne jedesmal alle möglichen Voraussetzungen manuell einzurichten. Möglicherweise führt das die Idee von gewöhnlichen Containern noch einen Schritt weiter.
Das VSCode-Plugin Remote Containers verfolgt mit Development Containern eine ganz ähnliche Idee (Link). Ob sich eines dieser Konzepte durchsetzen kann, ist aktuell noch nicht absehbar.
Fazit
Die grafische Oberfläche des Docker Desktops bietet Linux-Anwendern den gleichen Komfort wie Entwicklern, die Docker unter macOS oder Windows ausführen. Das ist an sich sehr erfreulich.
Der Docker Desktop enthält allerdings keine wirklich relevanten Funktionen, die nicht schon bisher auf Kommandoebene zur Verfügung standen. Gegen den Einsatz von Docker Desktop sprechen diverse Gründe:
Die Installation ist verblüffend umständlich. (Die Docker-Installation war schon immer relativ umständlich, weil nur wenige Distributionen aktuelle Docker-Pakete zur Verfügung stellen. Aber dass Docker Desktop die Sache noch komplizierter macht, ist absurd.)
Docker Desktop ist ein Komplettpaket inklusive aller Docker-Tools. Es ersetzt die bisherigen Pakete. Eine Installation des Docker Desktop parallel zu einem schon vorhandenen Docker-Setup ist nicht möglich.
Der Docker Desktop verwendet eine virtuelle Maschine zur Ausführung von Containern. Dadurch ergibt sich eine bessere Trennung zwischen dem Host-Rechner und den Docker-Container. Allerdings geht ein wesentlicher Vorteil von Docker unter Linux verloren, nämlich die nahtlose Integration von Docker-Containern in die Prozess- und Speicherverwaltung des Hosts. Der für die virtuelle Maschine reservierte Speicher wird zur Gänze Docker zugeteilt, ganz egal, wie viele oder wenige Container gerade ausgeführt werden. Auf Entwicklungsrechnern mag dieser Ansatz eine gewisse Berechtigung haben. Für das Deployment am Server ist der Docker Desktop definitiv ungeeignet (und auch gar nicht vorgesehen).
Weil der Docker Desktop eine virtuelle Maschine benötigt, kann der Docker Desktop nur bei nativen Linux-Installationen genutzt werden — nicht aber, wenn Linux selbst in einer virtuellen Maschine läuft. Vermutlich ist das ein Grund, warum bisher so wenig Testberichte zum Docker Desktop erschienen sind …
Der Docker Desktop steht Privatanwendern zwar kostenlos zur Verfügung, es handelt sich aber nicht um ein ein Open-Source-Programm. Der kommerziellen Einsatz ist in großen Unternehmen (>250 Mitarbeiter oder >10 Millionen $ Jahresumsatz) kostenpflichtig.
Es gibt unter Linux ein paar wenige Kommandos, welche ständig zum Einsatz kommen, dazu zählt sicherlich das Kommando ls. Nun ist dieser Befehl schon etwas in die Jahre gekommen, bietet aber eigentlich noch immer alles, was im Alltag benötigt wird.
Mit Exa gibt es einen ls Ersatz, der das staubige Image etwas aufpeppen möchte.
Bevor hier ein paar Worte zu Exa fallen noch ein kleiner Hinweis, wie ihr eure Top-Befehle auf der Konsole anzeigen könnt, damit ihr seht wie oft ihr ls eigentlich verwendet.
Um das Tool zu verwenden, reicht ein einfaches exa aus. Allerdings wird beispielsweise ein Ubuntu Nutzer schnell feststellen, dass es im Vergleich zu ls fast keine Unterschiede gibt, denn diese Distribution unterstützt bereits eine farbige Ausgabe.
Exa entfaltet seine Kraft also erst in der Tiefe. Hier ein paar Beispiele.
Ein schlichtes
exa -lF
wird sich bereits stark von ls -l unterscheiden, einerseits farblich, andererseits werden durch den Operator -F für file type zusätzliche Informationen angezeigt.
Praktischerweise bringt exa noch weitere Funktionen mit. So wird Git unterstützt und zeigt mit N für neue Dateien (staged) und M für geänderte Dateien (unstaged) weitere relevante Informationen an.
exa -l --git
Auch eine Baumansicht ist dabei und ermöglicht eine strukturierte Ansicht, ähnlich wie tree.
exa --tree --level=3
Daneben ist es ebenfalls möglich einen relativ mächtigen Filter anzuwenden oder Logos einzubinden. Bei letzterem muss allerdings erst die passende Schriftart installiert werden.
Eine ausführliche Dokumentation ist bei exa direkt zu finden.
Überaus praktisch empfinde ich die Möglichkeit, sich Listen nach gewünschten Werten wie Größe, Alter, usw. sortieren zu lassen.
exa -l --sort=size
exa -l --sort=age
Fazit
Nutzer, die ls im Alltag etwas aufmotzen möchten, sind bei exa gut aufgehoben. Dank der Paket-Installation in neueren Distributionen ist die Hemmschwelle, einen kurzen Blick zu wagen, relativ gering. Probiert es einfach mal aus, vielleicht sagt es euch ja zu.
Octotree ist eine Erweiterung, welche den fehlenden Dateibrowser auf Github nachliefert. Mithilfe einer in die Webseite eingeblendete Sidebar lässt es sich einfach via Baumansicht durch das Repository navigieren. Ich nutze die Grundversion, da ich die in der Proversion (70 €) … Weiterlesen →