{"id":166,"date":"2022-07-05T12:22:54","date_gmt":"2022-07-05T11:22:54","guid":{"rendered":"https:\/\/spinczyk.net\/blog\/?p=166"},"modified":"2022-07-05T12:22:54","modified_gmt":"2022-07-05T11:22:54","slug":"docker-mit-wsl-auf-windows-einrichten","status":"publish","type":"post","link":"https:\/\/spinczyk.net\/blog\/2022\/07\/05\/docker-mit-wsl-auf-windows-einrichten\/","title":{"rendered":"Docker mit WSL auf Windows einrichten"},"content":{"rendered":"\n<p>Insbesondere bei der Einrichtung lokaler Entwicklungsumgebungen in der Linux-basierten Web-Welt eignet sich Docker hervorragend zur Entwicklung. Wer seine apache oder nginx-basierten Container baut oder vorkonfigurierte Varianten nutzt, wird schnell feststellen, dass diese nicht allzu performant laufen. Zumindest bei der einfachen Nutzung von Docker-Desktop unter Windows ohne WSL Integration. Da kann ein Seitenaufruf schon mal mehrere Minuten dauern, zumindest bei entsprechendem applikationsseitigem Workload.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation von WSL \u2013 Windows-Subsystem f\u00fcr Linux<\/h2>\n\n\n\n<p>Abhilfe schafft hier WSL, das Windows-Subsystem f\u00fcr Linux (siehe <a href=\"https:\/\/de.wikipedia.org\/wiki\/Windows-Subsystem_f%C3%BCr_Linux\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/de.wikipedia.org\/wiki\/Windows-Subsystem_f%C3%BCr_Linux<\/a>). Dieses steht seit Windows 10 (Version 1903) in der Version WSL 2 zur Verf\u00fcgung. Im Grunde stellt Windows hiermit eine Kompatibilit\u00e4tsschicht zur Verf\u00fcgung, mit deren Hilfe Linux-Executables ausgef\u00fchrt werden k\u00f6nnen. So l\u00e4sst sich eine Linux-Distribution wie Ubuntu mehr oder weniger nativ in Windows ausf\u00fchren. Mehr Details zu den technischen Hintergr\u00fcnden von WSL kann man im o.g. Wikipedia-Artikel oder direkt bei Microsoft unter folgendem Link erfahren: <a href=\"https:\/\/docs.microsoft.com\/de-de\/windows\/wsl\/about\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.microsoft.com\/de-de\/windows\/wsl\/about<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Docker und WSL unter Windows<\/h2>\n\n\n\n<p>Docker wiederum unterst\u00fctzt die WSL2-Integration von Windows, sprich die Docker-Container inklusive m\u00f6glicher Mounts oder Volumes kann innerhalb der Linux-Distribution abgelegt werden, die wiederum nativ als Windows-App laufen wird.<\/p>\n\n\n\n<p>Unser <strong>Vorgehen<\/strong> sieht also so aus:<\/p>\n\n\n\n<ol type=\"1\"><li>Aktivierung der WSL Komponenten unter Windows<\/li><li>Installation einer alternativen Linux-Distribution unter Windows (optional)<\/li><li>Installation von Docker-Desktop und Aktivierung von WSL2<\/li><li>Ausf\u00fchren eines Containers mit deutlich gestiegener Geschwindigkeit<\/li><li>Fertig<\/li><\/ol>\n\n\n\n<p>Das Ganze ist fairly easy. Linux-Kenntnisse sind nicht wirklich erforderlich, der ganze Vorgang dauert im Grunde auch nur ein paar Minuten, allerdings nimmt das Herunterladen und Installieren der Software je nach Internetleitung und Rechnerleistung zus\u00e4tzlich Zeit in Anspruch.<\/p>\n\n\n\n<p><strong><u>Achtung<\/u><\/strong>: Der Vorgang erfordert den zwischenzeitlichen Neustart des Rechners, man sollte also entsprechend darauf eingestellt sein!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Aktivierung der WSL Komponenten unter Windows<\/h2>\n\n\n\n<p>Der einfachste Weg hierf\u00fcr f\u00fchrt \u00fcber die Power-Shell, die aber in jedem Fall mit Administrator-Rechten ausgef\u00fchrt werden muss. Daf\u00fcr einfach die Windows-Taste dr\u00fccken, dann \u201ePowershell\u201c eintippen und mit der rechten Maustaste auf das PowerShell Symbol im Menu klicken und \u201eAls Administrator ausf\u00fchren\u201c ausw\u00e4hlen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/PowerShell-als-Admin-ausfuehren.png\"><img loading=\"lazy\" decoding=\"async\" width=\"781\" height=\"678\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/PowerShell-als-Admin-ausfuehren.png\" alt=\"\" class=\"wp-image-168\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/PowerShell-als-Admin-ausfuehren.png 781w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/PowerShell-als-Admin-ausfuehren-300x260.png 300w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/PowerShell-als-Admin-ausfuehren-768x667.png 768w\" sizes=\"(max-width: 781px) 100vw, 781px\" \/><\/a><\/figure>\n\n\n\n<p>Anschlie\u00dfend wird in der PowerShell folgender Befehl ausgef\u00fchrt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wsl \u2013-install<\/code><\/pre>\n\n\n\n<p>Nach erfolgreicher Installation sieht das Ganze so aus:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Erfolgreiche-wsl-Installation.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"216\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Erfolgreiche-wsl-Installation.png\" alt=\"\" class=\"wp-image-169\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Erfolgreiche-wsl-Installation.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Erfolgreiche-wsl-Installation-300x107.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<p>Der Installationsvorgang von WSL meldet ja schon, dass ein Neustart erforderlich ist. Dieser m\u00fcsste dann jetzt einmal durchgef\u00fchrt werden. Nach dem Neustart startet Ubuntu in einer Konsole automatisch und setzt den Installationsprozess fort. Nach ggf. ein paar Minuten Wartezeit sollen Benutzername und Passwort vergeben werden. Das Passwort ist wichtig, um sp\u00e4ter ggf. Software innerhalb der Disitribution nachzuinstallieren. Daher nicht einfach irgendwas vergeben (das habe ich nun schon ein paar Mal im Netz gelesen). Passwort als im Idealfall via Password Manager generieren und speichern &#x1f609;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Benutzername-und-Passwort-nach-WSL-Installation.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"318\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Benutzername-und-Passwort-nach-WSL-Installation.png\" alt=\"\" class=\"wp-image-170\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Benutzername-und-Passwort-nach-WSL-Installation.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Benutzername-und-Passwort-nach-WSL-Installation-300x158.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><figcaption>Nach der Installation m\u00fcssen Benutzername und Passwort festgelegt werden.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Installation einer alternativen Linux-Distribution unter Windows<\/h2>\n\n\n\n<p>Stand heute (Juli 2022) steht bei der Installation von WSL via PowerShell nur Ubuntu 20.04 zur Verf\u00fcgung. Diese Distribution wird auch standardm\u00e4\u00dfig mitinstalliert. Man hat zwar die M\u00f6glichkeit andere Distributionen zu installieren (Kommando \u201ewsl -l -o\u201c listet die verf\u00fcgbaren auf), allerdings ist Ubuntu 22.04 LTS aktuell keine davon.<\/p>\n\n\n\n<p>Da ich gerne auf aktuellere Paketquellen zugreifen m\u00f6chte (unter anderem um bsw. &gt; php-8.X zu installieren), werde ich Ubuntu 22.04 als meine Standard-Distribution nachinstallieren. Dieser Vorgang ist allerdings optional. Wer mit Ubuntu 20.04 zurecht kommt, kann direkt zum n\u00e4chsten Schritt weiter (Installation von Docker-Desktop und Aktivierung von WSL2)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installation von Ubuntu 22.04 via Microsoft App Store<\/h3>\n\n\n\n<p>Die Installation ist relativ simpel, sie kann direkt via App Store erfolgen. Einfach nach Ubuntu suchen und die passende Version finden, anschlie\u00dfend ausw\u00e4hlen und via \u201eHerunterladen\u201c installieren.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Ubuntu-22.04.-via-App-Store-installieren.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"485\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Ubuntu-22.04.-via-App-Store-installieren.png\" alt=\"\" class=\"wp-image-171\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Ubuntu-22.04.-via-App-Store-installieren.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Ubuntu-22.04.-via-App-Store-installieren-300x240.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Linux-Distribution initial \u00f6ffnen<\/h3>\n\n\n\n<p>Nachdem die Linux-Distribution heruntergeladen wurde, erscheint im App-Store der Button \u201e\u00d6ffnen\u201c \u2013 alternativ ist Ubuntu 22.04 jetzt nat\u00fcrlich auch \u00fcber das Startmenu wie jede andere App zu \u00f6ffnen. Wichtig beim ersten \u00d6ffnen ist allerdings, dass die Einrichtung stattfindet \u2013 in der unter anderem Benutzername und Passwort festgelegt werden. Bei den anderen Optionen k\u00f6nnen einfach die Standardeinstellungen \u00fcbernommen werden.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Ubuntu-nach-Installation-oeffnen.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"424\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Ubuntu-nach-Installation-oeffnen.png\" alt=\"\" class=\"wp-image-173\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Ubuntu-nach-Installation-oeffnen.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Ubuntu-nach-Installation-oeffnen-300x210.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><figcaption>Nach der Installation l\u00e4sst sich Ubuntu \u00f6ffnen.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Ubuntu-Einrichtung-nach-Installation-als-WSL-Distribution.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"390\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Ubuntu-Einrichtung-nach-Installation-als-WSL-Distribution.png\" alt=\"\" class=\"wp-image-174\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Ubuntu-Einrichtung-nach-Installation-als-WSL-Distribution.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Ubuntu-Einrichtung-nach-Installation-als-WSL-Distribution-300x193.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<p>Nach dem \u00d6ffnen findet erst einmal die Einrichtung statt, das kann auch schon mal ein paar Minuten dauern. Die Konfiguration und Vergabe von Benutzername und Passwort erfolgen danach gef\u00fchrt. Als Sprache habe ich \u201eDeutsch\u201c ausgew\u00e4hlt, ansonsten die Standardeinstellungen \u00fcbernommen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Neue Linux-Distribution Ubuntu 22.04 als Standard WSL-Distribution konfigurieren<\/h3>\n\n\n\n<p>Nach der Installation kann \u00fcberpr\u00fcft werden, ob die Installation erfolgreich war. Dazu wird wieder in einer Powershell der Befehl<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wsl -l -v<\/code><\/pre>\n\n\n\n<p>eingegeben. Dieser listet die installierten Linux-Distributionen auf:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Installierte-WSL-Distributionen-anzeigen.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"109\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Installierte-WSL-Distributionen-anzeigen.png\" alt=\"\" class=\"wp-image-175\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Installierte-WSL-Distributionen-anzeigen.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Installierte-WSL-Distributionen-anzeigen-300x54.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<p>Das Sternchen zeigt an, welche Distribution die Standardversion ist. \u201eVERSION\u201c steht in diesem Fall f\u00fcr die WSL Version \u2013 in diesem Fall die Version 2, was genau der entspricht, die wir brauchen. Ich setze jetzt Ubuntu 22.04 als Standard-Distribution mit dem folgenden Befehl:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wsl \u2013-set-default Ubuntu-22.04<\/code><\/pre>\n\n\n\n<p>Die Ausgabe ist leise, d.h. es erfolgt keine Meldung:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/WSL-default-Distribution-setzen.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"60\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/WSL-default-Distribution-setzen.png\" alt=\"\" class=\"wp-image-176\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/WSL-default-Distribution-setzen.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/WSL-default-Distribution-setzen-300x30.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<p>Wir verifizieren im Anschluss mit dem vorherigen Befehl, um zu \u00fcberpr\u00fcfen ob der Vorgang erfolgreich war:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wsl -l -v<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/WSL-Pruefung-DSL-Default-Distribution.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"97\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/WSL-Pruefung-DSL-Default-Distribution.png\" alt=\"\" class=\"wp-image-177\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/WSL-Pruefung-DSL-Default-Distribution.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/WSL-Pruefung-DSL-Default-Distribution-300x48.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Nicht mehr ben\u00f6tigte WSL Distribution deinstallieren<\/h3>\n\n\n\n<p>Damit ich nur noch auf die Ubuntu Version 22.04 zugreife und nicht versehentlich in der 20.04 lande, deinstalliere ich schlussendlich noch die 20.04er Version mit dem folgenden Kommando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wsl \u2013-unregister Ubuntu<\/code><\/pre>\n\n\n\n<p>Danach sieht das Ganze bei mir so aus:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/WSL-Default-Ergebnis.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"90\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/WSL-Default-Ergebnis.png\" alt=\"\" class=\"wp-image-178\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/WSL-Default-Ergebnis.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/WSL-Default-Ergebnis-300x45.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<p>Dieser Schritt ist allerdings nicht zwingend erforderlich, es ist \u00fcberhaupt kein Problem, dass beide Distributionen parallel installiert sind (oder noch viele weitere).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation von Docker-Desktop und Aktivierung von WSL2<\/h2>\n\n\n\n<p>Jetzt wird einfach Docker f\u00fcr Windows installiert \u2013 dazu einfach auf <a href=\"https:\/\/www.docker.com\/get-started\/\">https:\/\/www.docker.com\/get-started\/<\/a> runterladen und installieren. Bei der Installation ist \u201eUse WSL 2 instead of Hyper-V (recommendend)\u201c schon vorausgew\u00e4hlt und sollte keinesfalls abgew\u00e4hlt werden.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Docker-Installation-WSL-2-enabled.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"418\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Docker-Installation-WSL-2-enabled.png\" alt=\"\" class=\"wp-image-179\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Docker-Installation-WSL-2-enabled.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Docker-Installation-WSL-2-enabled-300x207.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<p>Nach erfolgreicher Installation wird man aufgefordert, sich aus- und wieder einzuloggen. Ausgelogged wird man von Docker nach Bet\u00e4tigung des Buttons automatisch. Sobald man sich wieder einlogged, sollte Docker Desktop automatisch starten. Das Service Agreement muss noch akzeptiert werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">WSL-Integration in Docker Desktop aktivieren<\/h3>\n\n\n\n<p>Nachdem Docker Desktop erfolgreich gestartet wurde, muss die WSL Integration f\u00fcr die Linux-Distribution noch aktiviert werden. Dazu via Zahnrad in die Einstellungen und unter General erst einmal sicherstellen, dass \u201eUse the WSL 2 based engine\u201c aktiviert ist:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Docker-Einstellungen-WSL-2-based-engine.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"299\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Docker-Einstellungen-WSL-2-based-engine.png\" alt=\"\" class=\"wp-image-180\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Docker-Einstellungen-WSL-2-based-engine.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Docker-Einstellungen-WSL-2-based-engine-300x148.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<p>Danach unter \u201eResources &gt; WSL Integration\u201c sicherstellen, dass diese f\u00fcr alle erforderlichen Distros aktiviert ist:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Docker-WSL-Einrichtung-Distributionen.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"321\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Docker-WSL-Einrichtung-Distributionen.png\" alt=\"\" class=\"wp-image-181\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Docker-WSL-Einrichtung-Distributionen.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/Docker-WSL-Einrichtung-Distributionen-300x159.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Ausf\u00fchren eines Containers mit deutlich gestiegener Geschwindigkeit<\/h2>\n\n\n\n<p>So \u2013 fertig. Nun k\u00f6nnen Docker Container via WSL 2 benutzt werden. Wichtig dabei ist, dass die Installation und vor Allem das Mounten von Dateien oder Containern innerhalb der Linux-Distribution stattfinden sollten.<\/p>\n\n\n\n<p>Das ist so wie so viel praktischer, weil die Handhabung, Installation usw. innerhalb einer nativen Linux-Umgebung (zumindest IMHO) viel einfacher ist und relevante Entwicklungswerkzeuge (wie bsw. composer) viel einfacher installiert und operiert werden k\u00f6nnen.<\/p>\n\n\n\n<p>Zum Ausf\u00fchren eines Containers \u00f6ffne ich also zun\u00e4chst die Ubuntu App (bsw. via Startmenu) und navigiere in einen geeigneten Ordner. Gestartet wird die Linux-Distribution immer im Home-Verzeichnis des Users, also in meinem Fall \/home\/simon\/.<\/p>\n\n\n\n<p>Ich lege dazu neue Verzeichnisse an und navigiere hinein:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir projects\ncd projects\nmkdir demo\ncd demo<\/code><\/pre>\n\n\n\n<p>Anschlie\u00dfend starte \/ installiere ich meine Container wie gewohnt, bsw. so:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run \u2013name nginx-demo -p &nbsp;8080:80 nginx<\/code><\/pre>\n\n\n\n<p>Docker muss nicht installiert warden, es steht ja durch die WSL Integration innerhalb der Linux-Distribution schon zur Verf\u00fcgung. Docker l\u00e4dt den Container automatisch runter und startet ihn:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/docker-nginx-demo-running.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"460\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/docker-nginx-demo-running.png\" alt=\"\" class=\"wp-image-182\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/docker-nginx-demo-running.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/docker-nginx-demo-running-300x228.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<p>Et voila \u2013 das hat funktioniert. Ich kann nun auf den Container via http mit meinem Windows-Browser zugreifen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/docker-nginx-demo-success.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"343\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/docker-nginx-demo-success.png\" alt=\"\" class=\"wp-image-183\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/docker-nginx-demo-success.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/docker-nginx-demo-success-300x170.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<p>Das Ganze jetzt mit einer deutlich erh\u00f6hten Geschwindigkeit. Den Status meiner Docker Container und alles weitere kann ich wie gewohnt weiter \u00fcber Docker Desktop sehen\/machen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/docker-desktop-running-with-wsl-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"202\" src=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/docker-desktop-running-with-wsl-2.png\" alt=\"\" class=\"wp-image-184\" srcset=\"https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/docker-desktop-running-with-wsl-2.png 605w, https:\/\/spinczyk.net\/blog\/wp-content\/uploads\/2022\/07\/docker-desktop-running-with-wsl-2-300x100.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Fertig<\/h2>\n\n\n\n<p>Als N\u00e4chstes stehen wir nat\u00fcrlich vor der H\u00fcrde, dass i.d.R. Verzeichnisse in die Container eingehangen werden m\u00fcssen und an den Dateien gearbeitet werden muss. Git Operationen und alles andere kann ja einfach via Linux-Kommdandozeile durchgef\u00fchrt werden. F\u00fcr eine IDE klappt das so einfach nat\u00fcrlich nicht. Es gibt die unterschiedlichsten Wege das zu bewerkstelligen, der aus meiner Sicht einfachste und komfortabelste w\u00e4re eine IDE, die WSL unterst\u00fctzt. Ich nutze dazu Visual Studio Code, welches eine eigene WSL Extension hat, mit der problemlos auf die Dateien innerhalb der Linux-Distro zugegriffen werden kann. Dazu einfach die WSL Extension in VS Code installieren und fertig &#x1f609;<\/p>\n<div style=\"float:left;margin-right:10px;\"><iframe loading=\"lazy\" height=\"69\" width=\"53\" src=\"http:\/\/widgets.fbshare.me\/files\/fbshare.php?url=https:\/\/spinczyk.net\/blog\/2022\/07\/05\/docker-mit-wsl-auf-windows-einrichten\/&title=Docker mit WSL auf Windows einrichten&size=large&google_analytics=true\" frameborder=\"0\" scrolling=\"no\" allowtransparency=\"true\"><\/iframe><\/div>","protected":false},"excerpt":{"rendered":"<p>Insbesondere bei der Einrichtung lokaler Entwicklungsumgebungen in der Linux-basierten Web-Welt eignet sich Docker hervorragend zur Entwicklung. Wer seine apache oder nginx-basierten Container baut oder vorkonfigurierte Varianten nutzt, wird schnell feststellen, dass diese nicht allzu performant laufen. Zumindest bei der einfachen Nutzung von Docker-Desktop unter Windows ohne WSL Integration. Da kann ein Seitenaufruf schon mal mehrere [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/spinczyk.net\/blog\/wp-json\/wp\/v2\/posts\/166"}],"collection":[{"href":"https:\/\/spinczyk.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spinczyk.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spinczyk.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spinczyk.net\/blog\/wp-json\/wp\/v2\/comments?post=166"}],"version-history":[{"count":3,"href":"https:\/\/spinczyk.net\/blog\/wp-json\/wp\/v2\/posts\/166\/revisions"}],"predecessor-version":[{"id":186,"href":"https:\/\/spinczyk.net\/blog\/wp-json\/wp\/v2\/posts\/166\/revisions\/186"}],"wp:attachment":[{"href":"https:\/\/spinczyk.net\/blog\/wp-json\/wp\/v2\/media?parent=166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spinczyk.net\/blog\/wp-json\/wp\/v2\/categories?post=166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spinczyk.net\/blog\/wp-json\/wp\/v2\/tags?post=166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}