Kurz: nasazení skupiny s více kontejnery pomocí Docker Compose

V tomto kurzu použijete Docker Compose k definování a spuštění aplikace s více kontejnery místně a pak ji nasadíte jako skupinu kontejnerů v Azure Container Instances.

Při vývoji nativních aplikací cloudu s Docker můžete spouštět kontejnery v Azure Container Instances na vyžádání a chcete bez problémů přepnout z místního vývoje na nasazení v cloudu. Tato funkce je povolená integrací mezi Docker a Azure. Pomocí nativních příkazů Docker můžete v Azure spustit jednu instanci kontejneru nebo skupinu více kontejnerů.

Důležité

Ne všechny funkce Azure Container Instances jsou podporovány. Poskytněte zpětnou vazbu o integraci Docker-Azure vytvořením problému v úložišti GitHub integrace Docker ACI .

Tip

Rozšíření Docker pro Visual Studio Code můžete použít pro integrované prostředí pro vývoj, spouštění a správu kontejnerů, obrázků a kontextů.

V tomto článku:

  • Vytvoření registru kontejneru Azure
  • Klonování zdrojového kódu aplikace z GitHubu
  • Použití Docker Compose k sestavení image a spuštění aplikace s více kontejnery místně
  • Vložení image aplikace do registru kontejneru
  • Vytvoření kontextu Azure pro Docker
  • Uvedení aplikace v Azure Container Instances

Požadavky

  • Azure CLI – v místním počítači musíte mít nainstalované rozhraní příkazového řádku Azure. Doporučuje se verze 2.10.1 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace rozhraní příkazového řádku Azure CLI.

  • Docker Desktop – musíte použít Docker Desktop verze 2.3.0.5 nebo novější, který je k dispozici pro Windows nebo MacOS. Nebo nainstalujte rozhraní příkazového řádku Docker ACI Integration CLI pro Linux.

Vytvoření registru kontejneru Azure

Než vytvoříte registr kontejneru, budete potřebovat skupinu prostředků, do které ho budete moct nasadit. Skupina prostředků je logická kolekce, ve které se nasazují a spravují všech prostředky Azure.

Vytvořte skupinu prostředků pomocí příkazu az group create. V následujícím příkladu se vytvoří skupina prostředků s názvem myResourceGroup v oblasti eastus:

az group create --name myResourceGroup --location eastus

Jakmile vytvoříte skupinu prostředků, vytvořte registr kontejneru Azure pomocí příkazu az acr create. Název registru kontejneru musí být v rámci prostředí Azure jedinečný a musí obsahovat 5 až 50 alfanumerických znaků. Nahraďte položku <acrName> jedinečným názvem pro svůj registr:

az acr create --resource-group myResourceGroup --name <acrName> --sku Basic

Tady je částečný výstup nového registru kontejneru Azure s názvem mycontainerregistry082:

{
  "creationDate": "2020-07-16T21:54:47.297875+00:00",
  "id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/mycontainerregistry082",
  "location": "eastus",
  "loginServer": "mycontainerregistry082.azurecr.io",
  "name": "mycontainerregistry082",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "sku": {
    "name": "Basic",
    "tier": "Basic"
  },
  "status": null,
  "storageAccount": null,
  "tags": {},
  "type": "Microsoft.ContainerRegistry/registries"
}

Zbývající část tohoto kurzu používá <acrName> jako zástupný text pro název registru kontejneru, který zvolíte v tomto kroku.

Přihlášení k registru kontejneru

Před nahráváním imagí do instance služby Azure Container Registry se k ní musíte přihlásit. Dokončete operaci pomocí příkazu az acr login. Je třeba uvést jedinečný název, který jste zvolili pro registr kontejneru při jeho vytváření.

az acr login --name <acrName>

Například:

az acr login --name mycontainerregistry082

Příkaz po dokončení vrátí zprávu Login Succeeded (Přihlášení bylo úspěšné):

Login Succeeded

Získání kódu aplikace

Ukázkovou aplikací používanou v tomto kurzu je základní hlasovací aplikace. Aplikace se skládá z front-end webové součásti a back-end instance Redis. Webová součást je zabalená do vlastní image kontejneru. Instance Redis využívá nezměněnou image z Docker Hubu.

Pomocí příkazu git naklonujte ukázkovou aplikaci do svého vývojového prostředí:

git clone https://github.com/Azure-Samples/azure-voting-app-redis.git

Přejděte do klonovaného adresáře.

cd azure-voting-app-redis

V adresáři je zdrojový kód aplikace a předem vytvořený soubor s příznakem Docker, Docker-skládání. yaml.

Úprava souboru Docker Compose

Otevřete soubor docker-compose.yaml v textovém editoru. Soubor nakonfiguruje služby azure-vote-back azure-vote-front a .

version: '3'
services:
  azure-vote-back:
    image: mcr.microsoft.com/oss/bitnami/redis:6.0.8
    container_name: azure-vote-back
    environment:
      ALLOW_EMPTY_PASSWORD: "yes"
    ports:
        - "6379:6379"

  azure-vote-front:
    build: ./azure-vote
    image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
    container_name: azure-vote-front
    environment:
      REDIS: azure-vote-back
    ports:
        - "8080:80"

V azure-vote-front konfiguraci proveďte následující dvě změny:

  1. Aktualizujte image vlastnost ve azure-vote-front službě. Jako název image zadejte název přihlašovacího serveru vašeho registru kontejneru Azure <acrName> .azurecr.io. Pokud se například registr jmenuje myregistry , název přihlašovacího serveru je myregistry.azurecr.io (malými písmeny) a vlastnost image je myregistry.azurecr.io/azure-vote-front pak .
  2. Změňte ports mapování na 80:80 . Soubor uložte.

Aktualizovaný soubor by měl vypadat podobně jako následující:

version: '3'
services:
  azure-vote-back:
    image: mcr.microsoft.com/oss/bitnami/redis:6.0.8
    container_name: azure-vote-back
    environment:
      ALLOW_EMPTY_PASSWORD: "yes"
    ports:
        - "6379:6379"

  azure-vote-front:
    build: ./azure-vote
    image: myregistry.azurecr.io/azure-vote-front
    container_name: azure-vote-front
    environment:
      REDIS: azure-vote-back
    ports:
        - "80:80"

Když tyto náhrady nahradíte, image, kterou sestavíte v dalším kroku, se označí pro váš registr kontejneru Azure a image se může natáhnout, aby se spouštěla azure-vote-front v Azure Container Instances.

Tip

Pro tento scénář nemusíte používat registr kontejneru Azure. Můžete například zvolit privátní úložiště v Docker Hub k hostování image aplikace. Pokud zvolíte jiný registr, aktualizujte vlastnost image odpovídajícím způsobem.

Místní spuštění více kontejnerových aplikací

Spusťte příkaz docker-compose,který pomocí ukázkového souboru sestaví image kontejneru, stáhne image Redis a docker-compose.yaml spustí aplikaci:

docker-compose up --build -d

Po dokončení můžete vytvořené image zobrazit pomocí příkazu docker images. Stáhly se nebo se vytvořily tři image. Image azure-vote-front obsahuje front-endovou aplikaci, která image uwsgi-nginx-flask používá jako základ. Image redis slouží ke spuštění instance Redis.

$ docker images

REPOSITORY                                TAG        IMAGE ID            CREATED             SIZE
myregistry.azurecr.io/azure-vote-front    latest     9cc914e25834        40 seconds ago      944MB
mcr.microsoft.com/oss/bitnami/redis       6.0.8      3a54a920bb6c        4 weeks ago          103MB
tiangolo/uwsgi-nginx-flask                python3.6  788ca94b2313        9 months ago        9444MB

Spuštěním příkazu docker ps zobrazte spuštěné kontejnery:

$ docker ps

CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS              PORTS                           NAMES
82411933e8f9        myregistry.azurecr.io/azure-vote-front     "/entrypoint.sh /sta…"   57 seconds ago      Up 30 seconds       443/tcp, 0.0.0.0:80->80/tcp   azure-vote-front
b62b47a7d313        mcr.microsoft.com/oss/bitnami/redis:6.0.8  "/opt/bitnami/script…"   57 seconds ago      Up 30 seconds       0.0.0.0:6379->6379/tcp          azure-vote-back

Pokud chcete zobrazit spuštěnou aplikaci, zadejte v místním webovém prohlížeči http://localhost:80. Načte se ukázková aplikace, jak je znázorněno v následujícím příkladu:

Obrázek hlasovací aplikace

Po pokusu o místní aplikaci spusťte příkaz docker-compose a zastavte aplikaci a odeberte kontejnery.

docker-compose down

Na push image do registru kontejneru

Pokud chcete aplikaci nasadit do Azure Container Instances, musíte image nasazovat azure-vote-front do registru kontejneru. Spustit Docker – vytvořením nabízeného oznámení pro nahrání Image:

docker-compose push

Vložení do registru může trvat několik minut.

Chcete-li ověřit, zda je bitová kopie uložena v registru, spusťte příkaz AZ ACR úložiště show :

az acr repository show --name <acrName> --repository azure-vote-front

Vytvořit kontext Azure

Pokud chcete použít příkazy Docker ke spuštění kontejnerů v Azure Container Instances, nejdřív se přihlaste do Azure:

docker login azure

Po zobrazení výzvy zadejte nebo vyberte svoje přihlašovací údaje Azure.

Vytvořte ACI kontext spuštěním docker context create aci . Tento kontext přidruží Docker k předplatnému Azure a skupině prostředků, abyste mohli vytvářet a spravovat instance kontejnerů. Například pro vytvoření kontextu s názvem myacicontext:

docker context create aci myacicontext

Po zobrazení výzvy vyberte ID vašeho předplatného Azure a pak vyberte existující skupinu prostředků nebo vytvořte novou skupinu prostředků. Pokud zvolíte novou skupinu prostředků, vytvoří se se systémem generovaným názvem. Instance kontejnerů Azure, stejně jako všechny prostředky Azure, se musí nasadit do skupiny prostředků. Skupiny prostředků vám umožňují organizaci a správu souvisejících prostředků Azure.

Spusťte docker context ls a potvrďte, že jste přidali kontext ACI do kontextů Docker:

docker context ls

Nasadit aplikaci do Azure Container Instances

Dále přejděte do kontextu ACI. Následující příkazy Docker se spouštějí v tomto kontextu.

docker context use myacicontext

Spuštěním docker compose up aplikace spustíte aplikaci v Azure Container Instances. azure-vote-frontBitová kopie je načítána z registru kontejneru a skupina kontejnerů je vytvořena v Azure Container Instances.

docker compose up

Poznámka

Příkazy Docker Compose aktuálně dostupné v kontextu ACI jsou docker compose up a docker compose down . docker compose V těchto příkazech není žádné spojovníky.

V krátké době je nasazena skupina kontejnerů. Ukázkový výstup:

[+] Running 3/3
 ⠿ Group azurevotingappredis  Created                          3.6s
 ⠿ azure-vote-back            Done                             10.6s
 ⠿ azure-vote-front           Done                             10.6s

Spusťte docker ps , chcete-li zobrazit spuštěné kontejnery a IP adresu přiřazenou ke skupině kontejnerů.

docker ps

Ukázkový výstup:

CONTAINER ID                           IMAGE                                         COMMAND             STATUS              PORTS
azurevotingappredis_azure-vote-back    mcr.microsoft.com/oss/bitnami/redis:6.0.8                         Running             52.179.23.131:6379->6379/tcp
azurevotingappredis_azure-vote-front   myregistry.azurecr.io/azure-vote-front                            Running             52.179.23.131:80->80/tcp

Pokud chcete zobrazit spuštěnou aplikaci v cloudu, zadejte zobrazenou IP adresu v místním webovém prohlížeči. V tomto příkladu zadejte 52.179.23.131 . Načte se ukázková aplikace, jak je znázorněno v následujícím příkladu:

Obrázek hlasovací aplikace v ACI

Pokud chcete zobrazit protokoly front-endu kontejneru, spusťte příkaz Docker logs . Například:

docker logs azurevotingappredis_azure-vote-front

Můžete také použít Azure Portal nebo jiné nástroje Azure a zobrazit vlastnosti a stav skupiny kontejnerů, které jste nasadili.

Až skončíte s vyzkoušením aplikace, zastavte aplikaci a kontejnery pomocí docker compose down :

docker compose down

Tento příkaz odstraní skupinu kontejnerů v Azure Container Instances.

Další kroky

V tomto kurzu jste použili Docker Compose k přepnutí ze spouštění aplikace s více kontejnery místně na spouštění v Azure Container Instances. Naučili jste se:

  • Vytvoření registru kontejneru Azure
  • Klonování zdrojového kódu aplikace z GitHubu
  • Použití Docker Compose k sestavení image a místnímu spuštění více kontejnerové aplikace
  • Na push image aplikace do registru kontejneru
  • Vytvoření kontextu Azure pro Docker
  • Spuštění aplikace v Azure Container Instances

Můžete také použít rozšíření Dockeru pro Visual Studio Code integrované prostředí pro vývoj, spouštění a správu kontejnerů, imagí a kontextů.

Pokud chcete využít výhod více funkcí v Azure Container Instances, pomocí nástrojů Azure určete skupinu s více kontejnery. Podívejte se například na kurzy nasazení skupiny kontejnerů pomocí Azure CLI se souborem YAMLnebo nasazení pomocí Azure Resource Manager šablony.