Container im Fernzugriff - und Fazit

Außerdem wird noch die Erweiterung Remote - Containers benötigt. Sie ermöglicht, einen Docker-Container als Arbeitsumgebung für VS Code einzusetzen. Nach der Installation muss VS Code neu gestartet/reloaded werden.

  • In der Anwendung Windows-Features lässt sich WSL aktivieren. (Screenshot: Dirk Koller)
  • Der Microsoft Store listet verschiedene Linux-Distributionen. (Screenshot: Dirk Koller)
  • Beim Start von Ubuntu werden hilfreiche Informationen ausgegeben. (Screenshot: Dirk Koller)
  • Die Ausgabe von wsl -l verschafft einen Überblick über installierte Distributionen. (Screenshot: Dirk Koller)
  • Die Default-Distribution wird mit einem Asterisk markiert. (Screenshot: Dirk Koller)
  • An der Version kann man erkennen, ob die Distribution für WSL oder WLS2 vorliegt. (Screenshot: Dirk Koller)
  • WSL2 wird für die Zusammenarbeit mit Docker markiert. (Screenshot: Dirk Koller)
  • In den Docker-Einstellungen lassen sich Distributionen für die Zusammenarbeit auswählen. (Screenshot: Dirk Koller)
  • Die Remote-WSL-Erweiterung (Screenshot: Dirk Koller)
  • In der Status-Bar wird die Verbindung zu Ubuntu angezeigt. (Screenshot: Dirk Koller)
  • Die Docker-Erweiterung ermöglicht die Verwaltung der Container aus VS Code heraus. (Screenshot: Dirk Koller)
  • Die Erweiterung Remote-Containers bindet Docker Container als Arbeitsumgebung ein. (Screenshot: Dirk Koller)
Die Erweiterung Remote-Containers bindet Docker Container als Arbeitsumgebung ein. (Screenshot: Dirk Koller)
Stellenmarkt
  1. Mathematiker, Statistiker, Aktuar im Aktuariat (m/w/d)
    Allianz Deutschland AG, Unterföhring
  2. Innovations-Manager (m/w/d) für digitale Strategie in München
    Versicherungskammer Bayern Versicherungsanstalt des öffentlichen Rechts, München
Detailsuche

Durch Ausführen des Kommandos Remote-Containers: Add Development Container Configuration Files..., entweder durch Klick auf die Remote Host-Anzeige in der Statusbar oder aber mit Hilfe der Command Palette und anschließender Auswahl der Option From Dockerfile wird eine Datei namens devcontainer.json in einem Ordner .devcontainer angelegt. In ihr werden die Launch-Settings für den Container konfiguriert.

In der generierten Datei muss lediglich der Port angepasst werden:

  1. ,"forwardPorts": [8080],

Golem Akademie
  1. Linux-Shellprogrammierung: virtueller Vier-Tage-Workshop
    8.–11. März 2022, Virtuell
  2. Scrum Product Owner: Vorbereitung auf den PSPO I (Scrum.org): virtueller Zwei-Tage-Workshop
    3.–4. März 2022, virtuell
Weitere IT-Trainings

Wir erstellen gleich eine kleine Anwendung im Container und die läuft auf dem internen Port 8080 des Containers. Damit sie von außen erreichbar ist, wird der interne Port auf Port 8080 des Hosts gemappt.

VS Code erkennt die Konfiguration und fragt beim Speichern, ob der Ordner für die Arbeit im Container geladen werden soll. Sollte das nicht der Fall sein, kann man das mit dem Kommando Remote - Containers: Reopen in Container auch von Hand triggern.

Das Image wird dadurch basierend auf den Angaben im Dockerfile gebaut und ein Container mit den Einstellungen in devcontainer.json gestartet. Je nach Inhalt des Images kann das eine ganze Weile dauern, im Terminal lässt sich der Fortschritt anhand von Log-Meldungen verfolgen.

Wenn der Vorgang beendet ist, arbeitet VS Code innerhalb des Containers, also nicht mehr im Ubuntu-Filesystem. Man erkennt das wiederum an der Status Bar (hier steht jetzt Dev Container: Existing Dockerfile) oder am veränderten Kommandozeilenprompt beim Öffnen eines neuen Terminals:

  1. /workspaces/test #

Willkommen in der neuen Arbeitsumgebung! Schauen Sie sich ruhig um. Im Terminal lässt sich Node ausführen, beispielsweise node -v.

  1. /workspaces/test # node -v
  2. v14.11.0

Als Beispielanwendung wird hier ein Mini-Webserver mit dem Webframework Express realisiert. Der Code ist der Node.js-Doku entnommen. Die anzulegende Datei package.json mit den allgemeinen Projektdaten und der Abhängigkeit zu Express sieht folgendermaßen aus:

  1. json
  2. {
  3. "name": "docker_web_app",
  4. "version": "1.0.0",
  5. "description": "Node.js on Docker",
  6. "author": "First Last ",
  7. "main": "server.js",
  8. "scripts": {
  9. "start": "node server.js"
  10. },
  11. "dependencies": {
  12. "express": "^4.16.1"
  13. }
  14. }

Die Abhängigkeiten werden durch ein npm install, ausgeführt im Terminal des Containers, aufgelöst. Dabei wird der Ordner node_modules angelegt.

Der Code für den Webserver ist überschaubar, er wird in der Datei server.js gespeichert. Man beachte den Port 8080, den wir oben nach außen gemappt haben.

  1. javascript
  2. 'use strict';
  3.  
  4. const express = require('express');
  5.  
  6. // Constants
  7. const PORT = 8080;
  8. const HOST = '0.0.0.0';
  9.  
  10. // App
  11. const app = express();
  12. app.get('/', (req, res) => {
  13. res.send('Hello World');
  14. });
  15.  
  16. app.listen(PORT, HOST);
  17. console.log(`Running on http://${HOST}:${PORT}`);

Gestartet wird der Server mit dem Run-Pfeil direkt aus der Activity Bar von Visual Studio Code. Dabei wird noch eine Launch-Konfiguration für Node.js angelegt.

Die Ausgabe lässt sich dann unter Windows mit einem Browser unter http://localhost:8080 begutachten. Wir schauen nun mit einem Windows-Browser auf eine Node-Webanwendung, die in einem Container mit Alpine-Linux läuft. Der Container wird von Docker unter Ubuntu betrieben. Und das alles auf einem einzigen Rechner!

Windows Subsystem for Linux 2 (WSL 2) Tips, Tricks, and Techniques: Maximise productivity of your Windows 10 development machine with custom workflows and configurations

Fazit

Docker unter Windows hat schon mit WSL1 funktioniert und mit WSL2 ist es jetzt auch richtig flott. Zusammen mit VS Code ergeben sich dabei ungeahnte Möglichkeiten. Mit dem immer noch komfortableren Windows-Desktop lässt sich nah an der Produktivumgebung arbeiten. Dabei steht die ganze mächtige Linux-Welt zur Verfügung.

Dank Docker ist zum Beispiel das Verschieben der Anwendung auf einen Testserver ein Kinderspiel. Ebenso machbar sind vorbereitete Company-Images, die neue Entwickler einfach auf ihren, mit WSL und Docker ausgestatteten, Windows-Rechner pullen und den Code dazu aus einem Git-Repository laden.

Das tagelange Einrichten von neuen Rechnern wäre damit Geschichte und die Geräte nicht durch zahllose Installation vermurkst. Einziger Wermutstropfen: Das Hantieren mit den verschachtelten Umgebungen ist nicht ganz trivial. Man kann sich anfangs in den virtuellen Umgebungen leicht verlieren. Zum gegenwärtigen Zeitpunkt werden noch einige Entwickler in Containern vermisst ...

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 So wird an WSL angedockt
  1.  
  2. 1
  3. 2
  4. 3
  5. 4


torstenj 04. Nov 2020

Docker kann grundsätzlich fast jedes Filesystem. Insbesondere auch XFS. Warum...

torstenj 04. Nov 2020

Oder es ganz lassen Docker zu verwenden. Mit Podman und CRI-O kann man auch fast alles...

torstenj 04. Nov 2020

Bis jetzt nicht, aber auf Github kannst du verfolgen, was passiert.

LH 02. Nov 2020

Nicht wirklich, zumal WSL im Grunde auch nichts anderes macht. Vagrant und co. sind...



Aktuell auf der Startseite von Golem.de
Corona-Warn-App
Jede geteilte Warnung kostete 100 Euro

Die Bundesregierung hat für die Corona-Warn-App bisher mehr als 130 Millionen Euro ausgegeben. Derzeit gibt es besonders viele rote Warnungen.

Corona-Warn-App: Jede geteilte Warnung kostete 100 Euro
Artikel
  1. Activision Blizzard: Was passiert mit Call of Duty, Diablo und Xbox Game Pass?
    Activision Blizzard
    Was passiert mit Call of Duty, Diablo und Xbox Game Pass?

    Playstation als Verlierer und Exklusivspiele für den Xbox Game Pass: Golem.de über die bislang größte Übernahme durch Microsoft.
    Eine Analyse von Peter Steinlechner

  2. Dice: Update-Roadmap für Battlefield 2042 vorgestellt
    Dice
    Update-Roadmap für Battlefield 2042 vorgestellt

    Ob das reicht? Das Entwicklerstudio Dice hat seine Pläne für Battlefield 2042 vorgestellt. Der Shooter hat extrem niedrige Spielerzahlen.

  3. Energiespeicher: Große Druckluftspeicher locken Investorengelder an
    Energiespeicher
    Große Druckluftspeicher locken Investorengelder an

    Hydrostor bietet eine langlebige Alternative zu Netzspeichern aus Akkus, die zumindest in den 2020er Jahren wirtschaftlich ist.
    Von Frank Wunderlich-Pfeiffer

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • LG OLED 55" 120Hz 999€ • MindStar (u.a. NZXT WaKü 129€, GTX 1660 499€) • Seagate Firecuda 530 1TB inkl. Kühlkörper + 20€ PSN-Guthaben 189,90€ • HP Omen Gaming-Stuhl 319€ • Sony Pulse 3D Wireless PS5 Headset 79,99€ • Huawei MateBook 16,1" 16GB 512GB SSD 709€ [Werbung]
    •  /