Migration von Docker Desktop zu Rancher Desktop mithilfe von WSL2
Zum 31. Januar 2022 hat sich das Lizenmodell von Docker Deskop geändert. Größere Firmen müssen sich nun entscheiden auf die kostenpflichtige Version umzusteigen oder zu migrieren. Dieser Blogpost beschreibt die Migration zur OpenSource Alternative Rancher Desktop.
Warum ist eine Migration notwendig?
Zum 31. Januar 2022 hat sich das Lizenzmodell von Docker Desktop grundlegend geändert. Seither ist Voraussetzung für die Nutzung der kostenlosen Docker Desktop Version, dass das einsetzende Unternehmen weniger als 250 Mitarbeiter besitzt und weniger als 10 Millionen USD (ca. 9.093.200€) in einem Jahr verdient. [ 1 ] Diese Voraussetzungen lassen sich von kleinen Firmen erfüllen. Größere Firmen allerdings müssen sich nun entscheiden, auf eine kostenpflichtige Subscription umzusteigen oder sich nach Alternativen umzusehen. Eine vielversprechende Alternative für den Ersatz von Docker Desktop ist Rancher Desktop. Rancher Desktop ist eine Open-Source Software für Mac, Windows und Linux. Mithilfe von Rancher Desktop können Kubernetes und andere Container Management Plattformen betrieben und administriert werden.
Dieser Blogpost beschreibt wie eine Migration von Docker Desktop zu Rancher Desktop möglich ist, welche Probleme wir lösen mussten und was zu beachten ist.
Installation von Rancher Desktop
Zunächst sollte Docker Desktop vollständig von dem Entwicklungsrechner entfernt werden, um potenziellen Konfigurationsproblemen vorzubeugen. Anschließend kann Rancher Desktop auf der offiziellen Webseite von Rancher heruntergeladen werden. Die Images können mithilfe von dockerd oder containerd gebaut, hochgeladen, heruntergeladen und betrieben werden. [ 2 ]
Bei einer Migration von Docker Desktop auf Rancher sollte dockerd als Container Runtime eingesetzt werden, da die bestehenden docker-compose Konfigurationen dort einfacher und ohne größere Umbauten wiederverwendet werden können. Unsere Tests mit containerd haben gezeigt, dass mit dieser Container Runtime größere Umbauten am Setup notwendig sind. Beispielsweise wurde versucht beim Starten eines Containers das entsprechende Image aus der Docker Registry zu laden, anstatt auf das lokal gebaute zurückzugreifen.
Docker Credential Helper
Die Installation des Docker Credential Helpers wird benötigt, um die Zugangsdaten für den Login in die Docker Registry (Ausführen des Befehls docker login) sicher zu speichern. Aufgrund der Integration des WSL in Windows kann die Windows Version des Docker Credential Helpers direkt im WSL2 installiert und genutzt werden. Durch das Ausführen der folgenden Befehle wird die wincred.exe heruntergeladen und die entsprechenden Berechtigungen gesetzt:
# Finds the latest version
$ wincred_version=$(curl -fsSL -o
/dev/null
-w
"%{url_effective}"
https:
//github
.com
/docker/docker-credential-helpers/releases/latest
|
xargs
basename
)
# Downloads and extracts the .exe
$
sudo
curl -fL \
"
https://github.com/docker/docker-credential-helpers/releases/download/${wincred_version}/docker-credential-wincred-${wincred_version}-$(dpkg --print-architecture).zip"
|
zcat |
sudo
tee
/usr/local/bin/docker-credential-wincred
.exe >
/dev/null
# Assigns execution permission to it
$
sudo
chmod
+x
/usr/local/bin/docker-credential-wincred
.exe
Anschließend muss die Konfiguration der Docker CLI angepasst werden, damit der zuvor heruntergeladene Credential Helper genutzt wird. Dazu muss folgender Eintrag in der Datei ~/.docker/config.json
hinzugefügt werden (Falls noch nicht vorhanden):
{
"credsStore"
:
"wincred.exe"
}
Die Funktionalität kann durch Ausführen des Befehls docker login verifiziert werden. Falls es nicht korrekt funktioniert hat, wird eine Fehlermeldung erscheinen, dass die Credentials im Klartext gespeichert werden.
Docker-Compose
Zunächst muss die bestehende docker-compose Installation von Docker Desktop entfernt werden. Dazu sollte das bin Verzeichnis der alten Installation aus der „PATH“ Systemvariable entfernt werden.
Anschließend müssen noch im WSL vorhandene Referenzen aus dem Verzeichnis
gelöscht werden. Dazu die entsprechenden Links und Dateien in diesem Verzeichnis entfernen. Beispielsweise könnte die Auflistung der Inhalte des Ordners folgendermaßen aussehen:lrwxrwxrwx 1 root root 80 Jan 5 11:00 docker-buildx -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-buildx
lrwxrwxrwx 1 root root 81 Jan 5 11:00 docker-compose -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-compose
lrwxrwxrwx 1 root root 78 Jan 5 11:00 docker-scan -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-scan
Installation in WSL2
Nun sollte nochmals geprüft werden ob wirklich alle Referenzen zu der docker-compose Installation von Docker Desktop entfernt wurden. Dies kann mit dem Befehl
~$
which
docker-compose
getestet werden. Wenn dieser Befehl kein docker-compose mehr finden kann, wurde alles erfolgreich entfernt. Nun kann das docker-compose Binary aus Github heruntergeladen werden.
Nach dem Download der entsprechenden binary sollte diese zu docker-compose
umbenannt und in den Ordner $HOME/.docker/cli-plugins
verschoben werden.
Alternativ kann die binary auch in einen der folgenden Ordner kopiert werden, um dieses systemweit nutzen zu können:
/usr/local/lib/docker/cli-plugins
OR/usr/local/libexec/docker/cli-plugins
/usr/lib/docker/cli-plugins
OR/usr/libexec/docker/cli-plugins
Unter Umständen kann es nötig sein, das heruntergeladene Binary mit chmod +x
ausführbar zu machen. [ 3 ]
Testen der Rancher Installation
Um zu Testen ob alles richtig funktioniert hat, kann dieses Beispiel durchgetestet werden. Wenn alles wie beschrieben ohne Fehler funktioniert, ist die lokale Einrichtung von Rancher Desktop abgeschlossen und das Arbeiten mit Rancher Desktop kann beginnen.
Mehr über Frontend Entwicklung erfahren
Hi John Schmidt,
I think for that you could try using the environment variables as stated in the docs: https://rancher.com/docs/rancher/v2.5/en/installation/other-installation-methods/single-node-docker/proxy/
With that you should be able to configure rancher to know your proxy.
Kind regards
Fabian
Is it possible to run rancher desktop behind a proxy? My installation is not able to pull images and i do not know how to tell nerdctl and rancher-desktop to use a proxy