Mit der Veröffentlichung von Immich v1.109.0 haben die Entwickler optionale Lizenzen angekündigt. Man bekommt nun unten links angezeigt, dass man eine unlizenzierte Version einsetzt, sofern man keine Lizenz gekauft hat. Nachfolgend beide Lizenzoptionen und...
Das bei Red Hat entwickelte Podman ist eine Alternative zu Docker. Es benötigt keinen Daemon und läuft ohne Root-Rechte. Gerade ist Podman 5.0 erschienen.
Ein MQTT-Broker ist die Schnittstelle zwischen vielen IoT-Sensoren und Geräten, die Sensordaten auswerten oder Aktoren steuern. Das MQTT-Protokoll ist offen und sehr weit verbreitet. Es findet in der Industrie Anwendungen, ist aber auch in Smart Homes ist MQTT weit verbreitet. MQTT ist ein sehr schlankes und schnelles Protokoll. Es wird in Anwendungen mit niedriger Bandbreite gerne angewendet.
MQTT funktioniert, grob gesagt, folgendermaßen: IoT-Geräte können Nachrichten versenden, die von anderen IoT-Geräten empfangen werden. Die Vermittlungsstelle ist ein sogenannter MQTT-Broker. Dieser empfängt die Nachrichten von den Clients. Gleichzeitig können diese Nachrichten von anderen Clients abonniert werden. Die Nachrichten werden in sog. Topics eingestuft, die hierarchisch angeordnet sind, z.B. Wohnzimmer/Klima/Luftfeuchtigkeit.
Home Assistant, oder ein anderer Client, kann diesen Topic abonnieren und den Nachrichteninhalt („Payload„) auswerten (z.B. 65%).
Home Assistant OS vs. Home Assistant Container
In Home Assistant OS und Supervisor gibt es ein Addon, das einen MQTT-Broker installiert. Das ist sehr einfach, komfortabel und funktioniert wohl recht zurverlässig. In den Installationsarten Home Assistant Container und Core gibt es diese Möglichkeit nicht. Hier muss man manuell einen MQTT-Broker aufsetzen.
In diesem Artikel beschäftige ich mich damit, wie man den MQTT-Brocker Mosquitto über Docker installiert. Anschließend zeige ich, wie man die Konfigurationsdatei gestaltet und eine Verbindung zu Home Assistant herstellt. Das Ergebnis ist dann ungefähr so, als hätte man das Addon installiert. Los gehts!
Schritt für Schritt: MQTT-Broker Mosquitto mit Docker installieren
Als MQTT-Broker verwende ich die weit verbreitete Software Mosquitto von Eclipse. Dieser wird auch von Home Assistant bevorzugt und ist derjenige Broker, den das Addon installieren würde. Für diese Anleitung wird vorausgesetzt, dass Docker bereits installiert ist und eine SSH-Verbindung zum Server hergestellt werden kann.
Schritt 1: Zunächst erstellen wir ein paar Ordner, die wir später benötigen. Mosquitto wird später so konfiguriert, dass in diese Ordner alle wichtigen Dateien abgelegt werden. Dadurch kann man auf dem Filesystem des Servers Mosquitto konfigurieren und beobachten.
-p 1883:1883 Der genannte Port ist die Standardeinstellung für MQTT. Alles was auf diesen Port am Server ankommt, wird in den Mosquitto-Container geleitet.
-p 9001:9001 Über diesen Port laufen die Websocket-Anwendungen. Falls das nicht benötigt wird, kann man das weg lassen
name mosquitto Über diesen kurzen Namen können wir den Docker-Container steuern
-v <filesystem-Pfad>:<Container-Pfad> Die in Schritt 1 erstellten Ordner werden in den Container eingebunden
Wer lieber Docker Compose verwendet, trägt diesen Eintrag in seine *.yaml ein:
Schritt 5: Checken, ob der Container ordnungsgemäß läuft. In der folgenden Liste sollte eine Zeile mit dem Mosquitto-Docker auftauchen. Dieser sollte außerdem „up“ sein. Falls nicht, nochmal versuchen den Container zu starten und kontrollieren, ob er läuft.
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xxxxxxxxx eclipse-mosquitto "/init" 3 minutes ago Up 2 minutes [...] mosquitto
Schritt 6: Sehr gut, der Container läuft. Es wird dringend empfohlen, den MQTT-Broker so abzusichern, dass nur angemeldete User darauf zugreifen können. Das ist ja schon in Schritt 2 in die Konfigurationsdatei geschrieben worden. Mit dem folgenden Befehl melden wir uns in der Shell innerhalb des Containers an und erstellen einen Benutzer. In diesem Beispiel mosquitto. Im Anschluss an diesen Befehl wird man zweimal gebeten, das Passwort für den User festzulegen. Ist das geschafft, läuft der MQTT-Broker auf dem Server. Herzlichen Glückwunsch!
$ docker exec -it sh // öffnet die Shell innerhalb des Dockers
mosquitto_passwd -c /mosquitto/config/mosquitto.passwd mosquitto
Optional Schritt 7: Den MQTT-Broker bindet man in Home Assistant ein, indem man auf Einstellungen → Geräte und Dienste → + Integration hinzufügen klickt. Im Suchfenster nach „MQTT“ suchen und die Zugangsdaten eingeben. Die Server-Adresse findet man übrigens am schnellsten über ifconfig heraus.
Aktuell setze ich mich ein wenig mit MongoDB auseinander und habe mir lokal mit Docker eine Test-Installation eingerichtet:
docker run --name mongo -d mongodb/mongodb-community-server:latest
docker exec -it mongo mongosh
Using MongoDB: 7.0.3
Using Mongosh: 2.1.0
test> ...
Je nachdem, wie Sie Docker installiert haben, müssen Sie sudo vor jedes docker-Kommando stellen.
Zum Kennenlernen hätte ich nun gerne ein paar Beispieldatenbanken. Und tatsächlich stellt Mongo für sein Cloud-Angebot Atlas eine ganze Palette von Testdatenbanken zur Verfügung. Eine Kurzbeschreibung der Datenbanken finden Sie hier:
Genau die Datenbanken hätte ich gerne in meiner lokalen Installation als »Spielwiese«. Leider ist die Installation dieser Beispieldatenbanken bei der lokalen Verwendung von MongoDB umständlich. Auf GitHub gibt es Dumps (Backups) der Beispieldateien im JSON-Format:
Jetzt geht es darum, die Datenbanken zu importieren. Unter Linux oder macOS führen Sie dazu für jede JSON-Datei aus samples_xxx ein Kommando nach dem folgenden Muster aus:
Beachten Sie, dass Sie docker exec mit der Option -i ausführen müssen (nicht -it wie bisher für den interaktiven Betrieb), damit die Weitergabe von Daten über den Pipe-Operator | funktioniert.
Anstatt nun jede JSON-Datei einzeln zu importieren, bietet sich die Formulierung eines winzigen Scripts an. Er richtet für jedes DB-Verzeichnis sample_xxx eine gleichnamige Datenbank ein und importiert jedes JSON-Dokument als Collection. (Beachten Sie, dass die auf Atlas definierten Indize nicht eingerichtet werden. Wenn Sie zum Testen einen Index brauchen, müssen Sie diesen selbst einrichten.)
#!/bin/sh
for db in sample_*; do
for file in $db/*.json; do
collection="$(basename $file .json)"
cat $file | docker exec -i mongo mongoimport --db $db --collection $collection
done
done
Das Script muss in dem Verzeichnis ausgeführt werden, in dem sich die von GitHub heruntergeladenen sample_xxx-Verzeichnisse befinden.
Nach dem Import können Sie sich in der Mongo Shell überzeugen, dass alles geklappt hat:
docker exec -it mongo mongosh
test> show dbs
admin 40.00 KiB
config 72.00 KiB
local 40.00 KiB
sample_airbnb 52.09 MiB
sample_analytics 9.39 MiB
sample_geospatial 784.00 KiB
sample_mflix 28.39 MiB
sample_supplies 968.00 KiB
sample_training 61.30 MiB
sample_weatherdata 2.55 MiB
samples_airbnb 52.09 MiB
test 112.00 KiB
test> use sample_airbnb
sample_airbnb> show collections
listingsAndReviews
sample_airbnb> db.listingsAndReviews.findOne()
{
_id: '10009999',
listing_url: 'https://www.airbnb.com/rooms/10009999',
name: 'Horto flat with small garden',
...
}
Die Cloud Native Computing Foundation hat ein von der NCC Group jetzt abgeschlossenes Security Audit für Kubernetes als Open Source veröffentlicht.
Grundlage für das im Sommer 2022 gestartete Audit war Kubernetes 1.24. Ziel der Sicherheitsüberprüfung war es, alle Probleme in der Projektarchitektur und der Codebasis zu identifizieren, die die Sicherheit der Kubernetes-Benutzer beeinträchtigen könnten, teilte die CNCF bei der KubeCon + CloudNativeCon Europe in Amsterdam mit. Diese Sicherheitsprüfung sollte ein umfassendes Bild der Sicherheitslage von Kubernetes und seiner Quellcodebasis zeichnen und konzentrierte sich auf diverse Komponenten von Kubernetes.
Da Kubernetes auf Container-Runtimes wie Docker und CRI-O angewiesen sei, habe man Container-Escape-Vorgänge, die auf Fehlern in der Container-Laufzeit beruhen, nicht berücksichtigt, es sei denn, der Vorgang sei durch einen Fehler bei der Einrichtung des Containers durch Kubernetes entstanden, heißt es weiter zur Methodík.
Beim Audit seien unter anderem eine Reihe von Problemen mit der Administration von Benutzer- oder Netzwerkberechtigungen aufgefallen. Diese könnten für Verwirrung sorgen oder zu Unklarheiten über die für eine bestimmte Komponente verfügbaren Berechtigungen, heißt es.
Auch habe man Schwachstellen in der komponentenübergreifenden Authentifizierung entdeckt, die es unter Umständen einem böswilligen Benutzer ermöglichen, die Berechtigungen zum Cluster-Administrator zu erweitern.
Die auf Kubernetes 1.24 basierende Sicherheitsprüfung (PDF) ist im Kubernetes-GitHub-Repository verfügbar. Die CNCF hat im Jahr 2018 damit begonnen, Audits abzuhalten um das von ihr betreute Ökosystem sicher zu halten. Seit dieser Zeit hätten argo, Backstage, CoreDNS, CRI-O, Envoy, etcd, Flux, KubeEdge, Linkerd, Prometheus, SPIFFE/SPIRE und andere CNCF-Projekte Sicherheitsaudits durchlaufen.
Docker will kostenfreie Team-Accounts für den Hub nicht mehr anbieten. Für Open-Source-Projekte bringt das Verwirrung und Probleme. Das Unternehmen gesteht Kommunikationsfehler ein.
Container-Spezialist Docker hat mit einer E-Mail an verbliebene Nutzer kostenfreier Team-Accounts in seinem Hub für Irritation bei zahlreichen Open-Source-Projekten gesorgt. Demnach sollten die kostenfreien Accounts und deren Inhalte wie Images gelöscht werden, falls nicht auf ein zahlungspflichtiges Abo-Modell gewechselt werde. Schon kurz nach der Ankündigung versuchte Docker jedoch, zumindest die Open-Source-Community zu beschwichtigen.
Die versendete E-Mail und zunächst dazu verfügbare FAQ sorgten für zahlreiche Diskussionen, etwa auf Hackernews oder Twitter, aber auch im Issue-Tracker der Projekte selbst – vermutlich, weil sie viel zu vage formuliert waren und noch viele Fragen zum Ablauf offen ließen. Viele Projekte sahen sich nicht nur mit dem Problem konfrontiert, ein Abo abschließen zu müssen, sondern auch damit, dass Images und Daten gelöscht werden sollten, falls das nicht erfolgt. Das wiederum könnte CI-Systeme oder Ähnliches von Dritten beeinträchtigen.
In den inzwischen überarbeiten FAQ findet sich nun ein neuer Absatz speziell für Open-Source-Projekte. Darin heißt es, dass das Ende der kostenfreien Team-Accounts nicht für jene Projekte gelte, die Teil von Dockers Open-Source-Sponsoring-Programm seien. Das Unternehmen forderte betroffene Projekte auf, sich um Aufnahme in das Programm zu bemühen. Man habe außerdem die Zahl der Angestellten erhöht, die die Bewerbungen überprüfen.
Auf Github beschweren sich jedoch zahlreiche Open-Source-Entwickler, dass sie nach einer Bewerbung für das Sponsoring-Programm in der Vergangenheit nie eine Rückmeldung von Docker erhielten, wie etwa bei Rocky Linux. Ebenso heißt es, dass die Fragen oder Bestimmungen zur Aufnahme auf einige Projekte schlicht nicht zuträfen und eine Bewerbung so überhaupt nicht möglich sei.
Das Docker-Unternehmen bittet inzwischen offiziell auf seinem Blog um Entschuldigung: “Wir entschuldigen uns für die Art und Weise, wie wir die Beendigung des kostenfreien Docker-Team-Abonnements kommuniziert und durchgeführt haben, was die Open-Source-Gemeinschaft alarmiert hat.” Das Unternehmen hat außerdem ausführliche FAQ zum weiteren Vorgehen veröffentlicht und bittet weiter um Feedback von Open-Source-Projekten.
Mirantis hat kürzlich in Zusammenarbeit mit dem Moby-Projekt die Mirantis Container Runtime (MCR) 23.0 vorgestellt. Neue Funktionen, Verbesserungen, Fehlerbehebungen und Sicherheitsupdates seien im ersten neuen Release nach zwei Jahren Entwicklungsarbeit enthalten, teilt Mirantis mit.
Moby ist unter anderem das Upstream-Open-Source-Projekt von Mirantis Container Runtime sowie von Docker und Docker Engine. Mit MCR 23.0 gleiche man die Upstream-Versionsnummern des Moby-Projekts an, teilt Mirantis weiter mit. Benutzer können dadurch zwischen der Open-Source-Community-Software Moby und der für den Unternehmenseinsatz konzipierten und entsprechend supporteten Mirantis Container Runtime wechseln, heißt es weiter.
Mirantis Container Runtime (MCR) biete eine schlanke und hochverfügbare Plattform für die Ausführung von containerisierten Anwendungen, die mit dem Moby-Projekt konsistent und mit den meisten Docker-kompatiblen Entwicklungs- und Workflow-Tools, Plattformen und Diensten kompatibel sei.
ZU den Neuerungen in Moby/MCR 23.0 zählt der bislang nur experimentelle Support für Container-Storage-Interface-Treiber (CSI) in Swarm, was die Verwaltung von Speicherressourcen über Container-Orchestrierungsplattformen hinweg erleichtern soll. Die CSI-Treiber seien identisch mit denen, die auch Kubernetes verwende. Entwickler könnten dadurch dieselben Speicher-Plugins nutzen.
MCR 23.0 biete Unterstützung für Oracle Linux 8, RHEL 9 und Windows Server 2022.
Mit Version 23.0.0 steigt das Open-Source-Projekt Moby auf BuildKit und Buildx zum Bau von Linux-Images um. Der Classic Builder ist damit auf dem Abstellgleis gelandet.
Der Legacy-Builder kann zwar weiterhin verwendet werden, indem explizit DOCKER_BUILDKIT=0 gesetzt wird, soll aber in den kommenden Versionen endgültig entfallen.
Moby ist ein Open-Source-Projekt, das von Docker entwickelt wurde, um die Software-Containerisierung zu unterstützen. Es bietet eine Art “Lego-Bausatz” von Toolkit-Komponenten an und damit den Rahmen für deren Zusammenbau zu benutzerdefinierten Container-basierten Systemen. Zu den Komponenten gehören laut der Projektbeschreibung Container-Build-Tools, eine Container-Registry, Orchestrierungs-Tools, eine Laufzeitumgebung und vieles mehr.
Zu den weiteren Neuerungen zählt auch die Unterstützung für alternative OCI-Runtimes unter Linux, die kompatibel mit der containerd-Laufzeit-API v2 seien, heißt es in der Ankündigung auf Github, die alle weiteren Änderungen aufführt.
Die neuesten Versionen von Docker-CE und Docker-Compose, dem NGinx Proxy Manager sowie Portainer per Script auf verschiedenen Distributionen installieren.
Für die adminForge Mastodon Instanz kanoa.de haben wir kürzlich die Anleitung Mastodon Grafana Statistiken (Docker) geschrieben. Nun möchten wir den #MastoAdmin’s die Anpassungen der noch kleinen Mastodon Instanz nicht vorenthalten. Punkt 1: NGINX Caching...
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.