Tutorial: Erstellen eines Containerimages für die Bereitstellung in Azure Container Instances

Azure Container Instances ermöglicht die Bereitstellung von Docker-Containern in der Azure-Infrastruktur ohne Bereitstellung virtueller Computer oder Einführung eines übergeordneten Diensts. In diesem Tutorial verpacken Sie eine kleine Node.js-Webanwendung in einem Containerimage, das mit Azure Container Instances ausgeführt werden kann.

Dieser Artikel ist der erste Teil der Reihe und umfasst Folgendes:

  • Klonen des Anwendungsquellcodes von GitHub
  • Erstellen eines Containerimages aus der Anwendungsquelle
  • Testen der Images in einer lokalen Docker-Umgebung

Im zweiten und dritten Tutorialteil laden Sie eigene Images in Azure Container Registry hoch und stellen sie in Azure Container Instances bereit.

Vorbereitungen

Für dieses Tutorial müssen folgende Voraussetzungen erfüllt sein:

Azure CLI: Auf dem lokalen Computer muss mindestens Version 2.0.29 der Azure-Befehlszeilenschnittstelle installiert sein. Führen Sie az --version aus, um die Version zu ermitteln. Installations- und Upgradeinformationen finden Sie bei Bedarf unter Installieren von Azure CLI.

Docker: In diesem Tutorial wird vorausgesetzt, dass zentrale Docker-Konzepte wie Container und Containerimages sowie grundlegende -Befehle bekannt sind. Eine Einführung in Docker und Container finden Sie in der Docker-Übersicht.

Docker: Für dieses Tutorial muss Docker lokal installiert sein. Für die Docker-Umgebung stehen Konfigurationspakete für macOS, Windows und Linux zur Verfügung.

Wichtig

Da Azure Cloud Shell den Docker-Daemon nicht beinhaltet, müssen Sie sowohl die Azure-Befehlszeilenschnittstelle als auch die Docker-Engine auf Ihrem lokalen Computer installieren, um dieses Tutorial absolvieren zu können. Azure Cloud Shell kann für dieses Tutorial nicht verwendet werden.

Abrufen von Anwendungscode

Die Beispielanwendung in diesem Tutorial ist eine einfache Web-App, die in Node.js erstellt wird. Die Anwendung dient als statische HTML-Seite und sieht in etwa wie im folgenden Screenshot aus:

Tutorial-App im Browser

Verwenden Sie Git, um das Repository der Beispielanwendung zu klonen:

git clone https://github.com/Azure-Samples/aci-helloworld.git

Sie können das ZIP-Archiv auch direkt von GitHub herunterladen.

Erstellen des Containerimages

Die Dockerfile in der Beispielanwendung veranschaulicht, wie der Container erstellt wird. Ausgangspunkt ist ein offizielles Node.js-Image auf der Grundlage von Alpine Linux (einer kleinen Distribution, die sich gut für Container eignet). Anschließend werden die Anwendungsdateien in den Container kopiert und Abhängigkeiten mithilfe des Knotenpaket-Managers installiert, bevor schließlich die Anwendung gestartet wird.

FROM node:8.9.3-alpine
RUN mkdir -p /usr/src/app
COPY ./app/ /usr/src/app/
WORKDIR /usr/src/app
RUN npm install
CMD node /usr/src/app/index.js

Verwenden Sie den Befehl docker build, um das Containerimage zu erstellen, und kennzeichnen Sie es als aci-tutorial-app:

docker build ./aci-helloworld -t aci-tutorial-app

Die Ausgabe des Befehls docker build ähnelt dem folgenden (zur besseren Lesbarkeit gekürzten) Beispiel:

$ docker build ./aci-helloworld -t aci-tutorial-app
Sending build context to Docker daemon  119.3kB
Step 1/6 : FROM node:8.9.3-alpine
8.9.3-alpine: Pulling from library/node
88286f41530e: Pull complete
84f3a4bf8410: Pull complete
d0d9b2214720: Pull complete
Digest: sha256:c73277ccc763752b42bb2400d1aaecb4e3d32e3a9dbedd0e49885c71bea07354
Status: Downloaded newer image for node:8.9.3-alpine
 ---> 90f5ee24bee2
...
Step 6/6 : CMD node /usr/src/app/index.js
 ---> Running in f4a1ea099eec
 ---> 6edad76d09e9
Removing intermediate container f4a1ea099eec
Successfully built 6edad76d09e9
Successfully tagged aci-tutorial-app:latest

Verwenden Sie den Befehl docker images, um das erstellte Image anzuzeigen:

docker images

Ihr neu erstelltes Image sollte in der Liste angezeigt werden:

$ docker images
REPOSITORY          TAG       IMAGE ID        CREATED           SIZE
aci-tutorial-app    latest    5c745774dfa9    39 seconds ago    68.1 MB

Lokales Ausführen des Containers

Verwenden Sie vor dem Bereitstellen des Containers in Azure Container Instances den Befehl docker run, um ihn lokal auszuführen und sich zu vergewissern, dass dies funktioniert. Mit dem Switch -d können Sie den Container im Hintergrund ausführen, und mit -p können Sie einen beliebigen Port auf Ihrem Computer dem Port 80 des Containers zuordnen.

docker run -d -p 8080:80 aci-tutorial-app

In der Ausgabe des Befehls docker run wird die ID des ausgeführten Containers angezeigt, wenn der Befehl erfolgreich war:

$ docker run -d -p 8080:80 aci-tutorial-app
a2e3e4435db58ab0c664ce521854c2e1a1bda88c9cf2fcff46aedf48df86cccf

Navigieren Sie in Ihrem Browser jetzt zu http://localhost:8080, um sicherzustellen, dass der Container ausgeführt wird. Es wird eine Webseite angezeigt, die in etwa wie folgt aussieht:

Lokales Ausführen der App im Browser

Nächste Schritte

In diesem Tutorial haben Sie ein Containerimage erstellt, das in Azure Container Instances bereitgestellt werden kann, und sich vergewissert, dass die lokale Ausführung möglich ist. Bisher haben Sie Folgendes durchgeführt:

  • Anwendungsquelle von GitHub wurde geklont.
  • Erstellen eines Containerimages aus der Anwendungsquelle
  • Container wurde lokal getestet.

Fahren Sie mit dem nächsten Tutorial der Reihe fort, um sich über das Speichern Ihres Containerimages in Azure Container Registry zu informieren: