Nützliche Erweiterungen für Visual Studio Code, Teil 3 Azure-Container-Support dank Docker Extension

Von Dipl. -Ing. Thomas Drilling Lesedauer: 3 min

Anbieter zum Thema

Open Source ist für Microsoft schon länger keine Unbekannte mehr, was am Editor VS Code deutlich wird. Im dritten Teil dieser Serie schauen wir uns die Funktionen rund um Docker an.

Das VS-Code-Ökosystem bietet zahlreiche Erweiterungen für Docker.
Das VS-Code-Ökosystem bietet zahlreiche Erweiterungen für Docker.
(Bild: Drilling / Microsoft)

Wie in den vorherigen Beiträgen beginnen wir auch im Falle von Docker mit der zugehörigen Erweiterung für VS Code. Um mit einem lokalen Docker-Service wie Docker-Desktop für Windows arbeiten zu können, müssen wir die Docker-Extension von Microsoft innerhalb von VS Code also suchen und installieren.

Bei der Gelegenheit wäre die Installation weiterer nützlicher Docker-Erweiterungen denkbar, z. B. von „Docker Explorer“ und „Docker Extension Pack“ von Jun Han oder „Docker Compose“. Viele Extensions überschneiden sich allerdings in ihren Funktionalitäten, sodass wir es hier vorerst bei der Microsoft-Erweiterung belassen.

Danach öffnen wir zunächst ein VS-Code-Terminal und bringen einen ersten Docker-Container an den Start:

docker run -d -p 80:80 docker/getting-started

Ein erster Container in der Docker-Erweiterung.
Ein erster Container in der Docker-Erweiterung.
(Bild: Drilling / Microsoft)

Das Kommando erzeugt einen neuen Container im „Daemon“-Modus (getrennter Modus) aus dem Image docker/getting-started vom Docker-Hub und exponiert den Port 80 aus dem Container auf den Host-Port 80.

Sofern das genannte Image nicht lokal auf Ihrem Host vorliegt, wird es via „docker pull“ automatisch vom Docker-Hub bezogen und der fertige Container gut eine Container-ID zurück (hier: 09e2…042c). Ferner zeigt VS Code links im Docker-Abschnitt alle laufenden Container, die lokal vorhandenen Container-Images, sowie die Docker-Netzwerke (Networks), Docker-Volumes (sofern vorhanden) und vorhandene Docker-Kontexte.

Da wir beim Erstellen des neuen Containers keinen Container-Namen angegeben haben (dazu dient der Parameter --name) wird dieser automatisch gesetzt, in diesem Fall „modest_maxwell“. Im Kontextmenü des Containers (Rechtsklick) stehen dann verschiedene Optionen zur Verfügung wie z. B. „Attach shell“, „Inspect“, „Stop“, „Restart“ oder „Open in Browser“, wodurch eine lokal gehostete Seite zu DockerLabs passend zum Getting-Started-Tutorial geöffnet wird.

Löschen eines Containers in Docker Desktop.
Löschen eines Containers in Docker Desktop.
(Bild: Drilling / Microsoft)

Zum Löschen des Containers dient entweder das Kontextmenü in VS Code, die im Bild gezeigte Schaltfläche in Docker-Desktop, sofern der Docker unter Windows betrieben wird, oder das VS Code-Terminal:

docker ps
docker stop <container-id>
docker remove <container-id>

Arbeiten mit Docker-Files

Häufig arbeitet man allerdings nicht mit vorgefertigten Docker-Images. Um eine individuelle Anwendung in einen Container zu hosten, müssen wir zunächst ein passendes Dockerfile erstellen, ein textlesbares Skript mit Kommandos, die für das Erstellen eines neuen Container-Images zum Einsatz kommen.

Das Docker-Getting-Started-Tutorial stellt dazu im Ordner „app“ eine kleine To-Do-Listen-Anwendung zur Verfügung, die im Folgenden als Docker-Container lokal bereitgestellt werden soll. Zu diesem Zweck klonen wir das Repository auf den lokalen Rechner. Unter Windows kann man hierzu wahlweise das Zip-File über die Code-Schaltfläche von GitHub herunterladen oder das Repository im VS-Code-Terminal klonen:

git clone https://github.com/docker/getting-started.git

Das lokal geklonte Beispiel-Repository von Docker-Getting-Started.
Das lokal geklonte Beispiel-Repository von Docker-Getting-Started.
(Bild: Drilling / Microsoft)

An dieser Stelle empfiehlt es sich, zu überprüfen, ob die Datei „package.json“ im Ordner „app“ und die beide Ordner spec und src existieren. Anschließend erstellen wir im app-Ordner eine neue Datei mit dem Namen „Dockerfile“ mit folgendem Inhalt:

FROM node:12-alpine
RUN apk add --no-cache python2 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production --ignore-engines
CMD ["node", "/app/src/index.js"]

Das Erstellen eines Image aus einem Dockerfile.
Das Erstellen eines Image aus einem Dockerfile.
(Bild: Drilling / Microsoft)

Danach klicken Sie im Explorer mit rechts auf Ihr Dockerfile, und wählen im Kontextmenü den Eintrag „Build Image“ aus. Als Tag (Anzeigename des Images) könnte man z. B. „getting-started“ verwenden. Interessant ist auch zu beobachten, was im Terminal passiert.

Die Alternative für die Kommandozeile wäre:

docker build -t getting-started .

Damit haben wir unter Verwendung eines Dockerfiles erfolgreich ein neues Container-Image erstellt. Dies ist kein Grundlagen-Kurs für die Einführung in Docker, sondern soll nur die Integration mit VS Code demonstrieren. Wer sich mit Docker auskennt, der sieht, dass hier mehrere Layer heruntergeladen wurden.

Das fertige Docker-Image in VS Code.
Das fertige Docker-Image in VS Code.
(Bild: Drilling / Microsoft)

Alles beginnt mit dem Basis-Image „Alpine-Linux“. Dieses wird via „docker pull“ bezogen, sofern es sich nicht auf dem lokalen Rechner befindet. Anschließend kopiert das Dockerfile die Anwendung aus dem app-Ordner und installiert mittels „yarn“ die Abhängigkeiten der Anwendung. Die Zeile CMD legt den Standardbefehl fest, der ausgeführt wird, sobald ein Container mit Hilfe dieses Images gestartet wird.

Der Punkt am Ende des „docker build“-Befehls bedeutet übrigens, dass Docker im aktuellen Verzeichnis nach dem Dockerfile sucht. Das fertige Image zeigt sich entweder links im Docker-Abschnitt unter „Images“ oder durch Eingabe von:

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung
docker image ls

Das Starten eines neuen Containers.
Das Starten eines neuen Containers.
(Bild: Drilling / Microsoft)

Nun lässt sich aus dem neuen Image ein neuen Container erstellen: Das gelingt entweder im VS-Code-Terminal mit …

docker run -dp 3000:3000 gettingstarted

… oder durch den Kontext-Menü-Eintrag „Run“ im Docker-Explorer.

Unsere containerisierte Beispielanwendung in Form einer To-Do-Liste.
Unsere containerisierte Beispielanwendung in Form einer To-Do-Liste.
(Bild: Drilling / Microsoft)

Die Anwendung steht dann unter dem TCP-Port 3000 im lokalen Browser zur Verfügung.

(ID:49438244)