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:
- Aktualizujte
imagevlastnost veazure-vote-frontsluž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 jemyregistry.azurecr.io/azure-vote-frontpak . - Změňte
portsmapování na80: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:
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:
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.