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. Systemadministration (m/w/d) Netzwerke und IT-Sicherheit
    Fachhochschule Südwestfalen, Hagen, Meschede
  2. IT Project Manager (m/w/d)
    thinkproject Deutschland GmbH, 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. Microsoft 365 Security Workshop
    9.-11. Juni 2021, Online
  2. Advanced Python - Fortgeschrittene Programmierthemen
    16./17. September 2021, online
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


Aktuell auf der Startseite von Golem.de
Georg T.
Wieder Haft gegen Nichtzahler der Rundfunkgebühr

Georg T. sitzt seit 109 Tagen in Haft. Grund dafür sind 1.827 Euro Schulden für die Rundfunkgebühr - seine Haft kostet rund 18.000 Euro.

Georg T.: Wieder Haft gegen Nichtzahler der Rundfunkgebühr
Artikel
  1. MIG: Scheuers Funkloch GmbH hat erst zwei Stellen besetzt
    MIG
    Scheuers Funkloch GmbH hat erst zwei Stellen besetzt

    Der Bundesverkehrsminister scheint kein Personal für die Mobilfunkinfrastrukturgesellschaft zu finden.

  2. Square Enix: Action-Adventure mit den Guardians of the Galaxy angekündigt
    Square Enix
    Action-Adventure mit den Guardians of the Galaxy angekündigt

    E3 2021 Erinnert an Mass Effect, aber mit Humor und Groot: Square Enix will noch 2021 das Solo-Abenteuer Guardians of the Galaxy veröffentlichen.

  3. Bethesda: Starfield mit Rätseln und Doom Eternal mit 120 fps
    Bethesda
    Starfield mit Rätseln und Doom Eternal mit 120 fps

    E3 2021 Der Teaser von Starfield lädt zum Knoblen ein, Redfall bietet Blutsauger - und Doom Eternal erhält das Next-Gen-Grafikupdate.

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...


Folgen Sie uns
       


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
    Schnäppchen • Alternate (u. a. MSI Optix 27" WQHD/165 Hz 315,99€ und Fractal Design Vector RS Blackout Dark TG 116,89€) • Corsair Hydro H80i V2 RGB 73,50€ • Apple iPad 10.2 389€ • Razer Book 13 1.158,13€ • Fractal Design Define S2 Black 99,90€ • Intel i9-11900 379€ • EPOS Sennheiser GSP 600 149€ [Werbung]
    •  /