Tutorial: Bereitstellen einer Gruppe mit mehreren Containern über eine Resource Manager-Vorlage
Azure Container Instances unterstützt die Bereitstellung von mehreren Containern auf einem einzelnen Host mit einer Containergruppe. Containergruppen sind nützlich, wenn eine Sidecaranwendung für die Protokollierung, die Überwachung oder eine andere Konfiguration, bei der ein Dienst einen zweiten angefügten Prozess benötigt, erstellt wird.
In diesem Tutorial führen Sie Schritte zum Ausführen einer Sidecarkonfiguration mit zwei Containern aus, indem Sie eine Azure Resource Manager-Vorlage mithilfe der Azure-Befehlszeilenschnittstelle (Command Line Interface, CLI) bereitstellen. Folgendes wird vermittelt:
- Konfigurieren einer Vorlage für eine Gruppe mit mehreren Containern
- Bereitstellen der Containergruppe
- Anzeigen der Protokolle der Container
Für Szenarien, in denen Sie mit der Containergruppe weitere Azure-Dienstressourcen (z. B. eine Azure Files-Freigabe oder ein virtuelles Netzwerk) bereitstellen müssen, können Sie ganz einfach eine Resource Manager-Vorlage anpassen.
Hinweis
Gruppen mit mehreren Containern sind aktuell auf Linux-Container beschränkt.
Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.
Voraussetzungen
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.
Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
Konfigurieren einer Vorlage
Beginnen Sie, indem Sie den folgenden JSON-Code in eine neue Datei mit dem Namen azuredeploy.json
kopieren. In Azure Cloud Shell können Sie die Datei mit Visual Studio Code in Ihrem Arbeitsverzeichnis erstellen:
code azuredeploy.json
Diese Resource Manager-Vorlage definiert eine Containergruppe mit zwei Containern, einer öffentlichen IP-Adresse und zwei verfügbar gemachten Ports. Der erste Container in der Gruppe führt eine Webanwendung mit Internetverbindung aus. Der zweite Container, der Sidecar, stellt eine HTTP-Anforderung an die Hauptwebanwendung über das lokale Netzwerk der Gruppe.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"containerGroupName": {
"type": "string",
"defaultValue": "myContainerGroup",
"metadata": {
"description": "Container Group name."
}
}
},
"variables": {
"container1name": "aci-tutorial-app",
"container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
"container2name": "aci-tutorial-sidecar",
"container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
},
"resources": [
{
"name": "[parameters('containerGroupName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2019-12-01",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[variables('container1name')]",
"properties": {
"image": "[variables('container1image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
},
"ports": [
{
"port": 80
},
{
"port": 8080
}
]
}
},
{
"name": "[variables('container2name')]",
"properties": {
"image": "[variables('container2image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
}
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": 80
},
{
"protocol": "tcp",
"port": 8080
}
]
}
}
}
],
"outputs": {
"containerIPv4Address": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containerGroupName'))).ipAddress.ip]"
}
}
}
Fügen Sie ein Objekt zum JSON-Dokument mit dem folgenden Format hinzu, um einen Container der privaten Imageregistrierung verwenden zu können. Eine Beispielimplementierung dieser Konfiguration finden Sie in der Dokumentation Referenz zu ACI Resource Manager-Vorlagen.
"imageRegistryCredentials": [
{
"server": "[parameters('imageRegistryLoginServer')]",
"username": "[parameters('imageRegistryUsername')]",
"password": "[parameters('imageRegistryPassword')]"
}
]
Bereitstellen der Vorlage
Erstellen Sie mithilfe des Befehls az group create eine Ressourcengruppe.
az group create --name myResourceGroup --location eastus
Stellen Sie die Vorlage mit dem Befehl az deployment group create bereit.
az deployment group create --resource-group myResourceGroup --template-file azuredeploy.json
Innerhalb weniger Sekunden sollten Sie eine erste Antwort von Azure erhalten.
Zusammenfassung der Bereitstellungen anzeigen
Um den Bereitstellungsstatus anzuzeigen, verwenden Sie den folgenden Befehl az container show:
az container show --resource-group myResourceGroup --name myContainerGroup --output table
Wenn Sie die laufende Anwendung anzeigen möchten, navigieren Sie zu ihrer IP-Adresse in Ihrem Browser. In dieser Beispielausgabe lautet die IP 52.168.26.124
:
Name ResourceGroup Status Image IP:ports Network CPU/Memory OsType Location
---------------- --------------- -------- -------------------------------------------------------------------------------------------------- -------------------- --------- --------------- -------- ----------
myContainerGroup danlep0318r Running mcr.microsoft.com/azuredocs/aci-tutorial-sidecar,mcr.microsoft.com/azuredocs/aci-helloworld:latest 20.42.26.114:80,8080 Public 1.0 core/1.5 gb Linux eastus
Containerprotokolle anzeigen
Zeigen Sie die Protokollausgabe eines Containers mithilfe des Befehls az container logs an. Das --container-name
-Argument gibt den Container an, aus dem Protokolle erhalten werden können. In diesem Beispiel wird der Container aci-tutorial-app
angegeben.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app
Ausgabe:
listening on port 80
::1 - - [02/Jul/2020:23:17:48 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:51 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:54 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
Führen Sie einen ähnlichen Befehl aus, in dem Sie den Container aci-tutorial-sidecar
angeben, um die Protokolle für den Sidecarcontainer anzuzeigen.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar
Ausgabe:
Every 3s: curl -I http://localhost 2020-07-02 20:36:41
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 1663 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Wed, 29 Nov 2017 06:40:40 GMT
ETag: W/"67f-16006818640"
Content-Type: text/html; charset=UTF-8
Content-Length: 1663
Date: Thu, 02 Jul 2020 20:36:41 GMT
Connection: keep-alive
Wie Sie sehen, sendet das Sidecar in regelmäßigen Abständen über das lokale Netzwerk der Gruppe eine HTTP-Anforderung an die Hauptwebanwendung, um sicherzustellen, dass diese ausgeführt wird. Dieses Sidecarbeispiel kann erweitert werden, um eine Warnung auszulösen, wenn ein anderer HTTP-Antwortcode als 200 OK
empfangen wird.
Nächste Schritte
In diesem Tutorial haben Sie eine Containergruppe mit mehreren Containern mit einer Azure Resource Manager-Vorlage in Azure Container Instances bereitgestellt. Sie haben Folgendes gelernt:
- Konfigurieren einer Vorlage für eine Gruppe mit mehreren Containern
- Bereitstellen der Containergruppe
- Anzeigen der Protokolle der Container
Weitere Beispielvorlagen finden Sie unter Azure Resource Manager-Vorlagen für Azure Container Instances.
Sie können eine Gruppe mit mehreren Containern auch mithilfe einer YAML-Datei angeben. Das YAML-Format ist präziser, daher ist die Bereitstellung mit einer YAML-Datei eine gute Wahl, wenn Ihre Bereitstellung nur Containerinstanzen enthält.