• IT-Karriere:
  • Services:

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. GRAMMER Interior Components GmbH, Hardheim
  2. Universitätsklinikum Frankfurt, Frankfurt

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],

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


Anzeige
Hardware-Angebote
  1. (u. a. Zotac Gaming GeForce RTX 3090 Trinity für 1.787,33€)

torstenj 04. Nov 2020 / Themenstart

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

torstenj 04. Nov 2020 / Themenstart

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

torstenj 04. Nov 2020 / Themenstart

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

LH 02. Nov 2020 / Themenstart

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

Kommentieren


Folgen Sie uns
       


Viewsonic M2 - Test

Der kleine LED-Projektor eignet sich für Präsentationen und als flexibles Kino für unterwegs.

Viewsonic M2 - Test Video aufrufen
PC-Hardware: Warum Grafikkarten derzeit schlecht lieferbar sind
PC-Hardware
Warum Grafikkarten derzeit schlecht lieferbar sind

Eine RTX 3000 oder eine RX 6000 zu bekommen, ist schwierig: Eine hohe Nachfrage trifft auf Engpässe - ohne Entspannung in Sicht.
Eine Analyse von Marc Sauter

  1. Instinct MI100 AMDs erster CDNA-Beschleuniger ist extrem schnell
  2. Hardware-accelerated GPU Scheduling Besseres VRAM-Management unter Windows 10

iPhone 12 Mini im Test: Leistungsstark, hochwertig, winzig
iPhone 12 Mini im Test
Leistungsstark, hochwertig, winzig

Mit dem iPhone 12 Mini komplettiert Apple seine Auswahl an aktuellen iPhones für alle Geschmäcker: Auf 5,4 Zoll sind hochwertige technischen Finessen vereint, ein besseres kleines Smartphone gibt es nicht.
Ein Test von Tobias Költzsch

  1. Apple Bauteile des iPhone 12 kosten 313 Euro
  2. Touchscreen und Hörgeräte iOS 14.2.1 beseitigt iPhone-12-Fehler
  3. iPhone Magsafe ist nicht gleich Magsafe

Librem Mini v2 im Test: Der kleine Graue mit dem freien Bios
Librem Mini v2 im Test
Der kleine Graue mit dem freien Bios

Der neue Librem Mini eignet sich nicht nur perfekt für Linux, sondern hat als einer von ganz wenigen Rechnern die freie Firmware Coreboot und einen abgesicherten Bootprozess.
Ein Test von Moritz Tremmel

  1. Purism Neuer Librem Mini mit Comet Lake
  2. Librem 14 Purism-Laptops bekommen 6 Kerne und 14-Zoll-Display
  3. Librem Mini Purism bringt NUC-artigen Mini-PC

    •  /