Öğretici: Docker Compose kullanarak çok kapsayıcılı bir grup dağıtma
Bu öğreticide, bir çok Kapsayıcılı uygulamayı yerel olarak tanımlayıp çalıştırmak ve sonra Azure Container Instances bir kapsayıcı grubu olarak dağıtmak için Docker Compose kullanırsınız.
Docker ile bulutta yerel uygulamalar geliştirirken ve yerel geliştirmeden bulut dağıtımına sorunsuz bir şekilde geçmek istediğinizde, kapsayıcıları isteğe bağlı Azure Container Instances olarak çalıştırın. Bu özellik, Docker ve Azure arasındaki tümleştirmeyleetkinleştirilir. Yerel Docker komutlarını, Azure 'da tek bir kapsayıcı örneği veya çok kapsayıcılı bir grup çalıştırmak için kullanabilirsiniz.
Önemli
Azure Container Instances özelliklerinin hepsi desteklenmez. Docker ACI tümleştirmesi GitHub deposunda bir sorun oluşturarak Docker-Azure tümleştirme hakkında geri bildirim sağlayın.
İpucu
Kapsayıcıları, görüntüleri ve bağlamlarını geliştirmek, çalıştırmak ve yönetmek için tümleşik bir deneyim için Visual Studio Code Için Docker uzantısını kullanabilirsiniz.
Bu makalede şunları yapacaksınız:
- Azure kapsayıcı kayıt defteri oluşturma
- Uygulama kaynak kodunu GitHub’dan kopyalama
- Bir görüntü derlemek ve çok kapsayıcılı bir uygulamayı yerel olarak çalıştırmak için Docker Compose kullanma
- Uygulama görüntüsünü kapsayıcı Kayıt defterinize gönderme
- Docker için Azure bağlamı oluşturma
- Azure Container Instances içinde uygulamayı getir
Önkoşullar
Azure CLI -Azure CLI 'nın yerel bilgisayarınızda yüklü olması gerekir. Sürüm 2.10.1 veya üzeri önerilir. Sürümü bulmak için
az --versionkomutunu çalıştırın. Yükleme veya yükseltme yapmanız gerekirse bkz. Azure CLI’yı yükleme.Docker Desktop - Windows veya MacOSiçin kullanılabilen Docker Desktop sürüm 2.3.0.5 veya üstünü kullanmanız gerekir. Veya Linux Için Docker acı TÜMLEŞTIRMESI CLI'sını yükler.
Azure kapsayıcı kayıt defteri oluşturma
Kapsayıcı kayıt defterinizi oluşturmadan önce bunun dağıtılacağı bir kaynak grubu gerekir. Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal koleksiyondur.
az group create komutuyla bir kaynak grubu oluşturun. Aşağıdaki örnekte, eastus bölgesinde myResourceGroup adlı bir kaynak grubu oluşturulur:
az group create --name myResourceGroup --location eastus
Kaynak grubunu oluşturduktan sonra az acr create komutuyla bir Azure kapsayıcı kayıt defteri oluşturun. Kapsayıcı kayıt defteri adı Azure’da benzersiz olmalı ve 5-50 arası alfasayısal karakter içermelidir. <acrName> değerini kayıt defteriniz için benzersiz bir adla değiştirin:
az acr create --resource-group myResourceGroup --name <acrName> --sku Basic
Aşağıda, mycontainerregistry082 adlı yeni bir Azure Container Registry için kısmi çıktı verilmiştir:
{
"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"
}
Bu öğreticinin geri kalan aşamalarında, bu adımda seçtiğiniz kapsayıcı kayıt defteri adı için yer tutucu olarak <acrName> kullanılmaktadır.
Kapsayıcı kayıt defterinde oturum açma
Görüntü göndermeden önce, Azure Container Registry örneğinizde oturum açmanız gerekir. İşlemi tamamlamak için az acr login komutunu kullanın. Oluşturduğunuzda, kapsayıcı kayıt defteri için seçtiğiniz benzersiz adı sağlamanız gerekir.
az acr login --name <acrName>
Örnek:
az acr login --name mycontainerregistry082
Komut tamamlandığında Login Succeeded döndürülür:
Login Succeeded
Uygulama kodunu alma
Bu öğreticide kullanılan örnek uygulama, temel oylama uygulamasıdır. Bu uygulama, ön uç bileşen ile arka uç Redis örneğinden oluşur. Web bileşeni, özel kapsayıcı görüntüsüne paketlenmiştir. Redis örneği, Docker Hub’dan alınan değiştirilmemiş bir görüntü kullanır.
Örnek uygulamayı geliştirme ortamınıza kopyalamak için git komutunu kullanın:
git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
Kopyalanmış dizine geçin.
cd azure-voting-app-redis
Dizin içinde uygulama kaynak kodu ve önceden oluşturulmuş bir Docker Compose dosyası, Docker-Compose. YAML olur.
Docker compose dosyasını değiştirme
Docker-compose.yaml dosyasını bir metin düzenleyicisinde açın. Dosyası ve hizmetlerini azure-vote-back azure-vote-front yapılandırır.
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"
Yapılandırmada azure-vote-front aşağıdaki iki değişikliği yapın:
- Hizmette
imageözelliğiniazure-vote-frontgüncelleştirin. Görüntü adına Azure kapsayıcı kayıt defterinizin oturum açma sunucusu adı <acrName> (.azurecr.io. Örneğin, kayıt defteriniz myregistry olarak adlandırılmışsa oturum açma sunucusu adı myregistry.azurecr.io (hepsi küçük harf) olur ve görüntü özelliğimyregistry.azurecr.io/azure-vote-frontolur. - Eşlemeyi
portsolarak80:80değiştirme. Dosyayı kaydedin.
Güncelleştirilmiş dosya aşağıdakine benzer şekilde görünüyor:
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"
Bu değiştirmeleri yaparak, sonraki adımda derlemeniz gereken görüntü Azure kapsayıcı kayıt defteriniz için etiketlenir ve görüntü bir sonraki adımda azure-vote-front Azure Container Instances.
İpucu
Bu senaryo için Bir Azure kapsayıcı kayıt defteri kullanmak zorunda değildir. Örneğin, uygulama görüntülerinizi barındırmak için Docker Hub depoyu seçebilirsiniz. Farklı bir kayıt defteri seçerseniz görüntü özelliğini uygun şekilde güncelleştirin.
Çok kapsayıcılı uygulamayı yerel olarak çalıştırma
Kapsayıcı görüntüsünü derlemek, Redis görüntüsünü indirmek ve uygulamayı başlatmak için örnek dosyayı kullanan docker-compose up docker-compose.yaml dosyasını çalıştırın:
docker-compose up --build -d
Tamamlandığında, oluşturulan görüntüleri görmek için docker images komutunu kullanın. Üç görüntü indirilir veya oluşturulur. Görüntü, azure-vote-front temel olarak görüntüyü kullanan ön uç uygulamasını uwsgi-nginx-flask içerir. redis görüntüsü bir Redis örneği başlatmak için kullanılır.
$ 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
Çalışan kapsayıcıları görmek için docker ps komutunu çalıştırın:
$ 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
Çalışan uygulamayı görmek için yerel web tarayıcısına http://localhost:80 yazın. Örnek uygulama aşağıdaki örnekte gösterilen şekilde yüklenir:
Yerel uygulamayı dendikten sonra uygulamayı durdurmak ve kapsayıcıları kaldırmak için docker-compose'ı çalıştırın.
docker-compose down
Kapsayıcı kayıt defterine görüntü itme
Uygulamayı Azure Container Instances dağıtmak için, azure-vote-front görüntüyü kapsayıcı Kayıt defterinize göndermeniz gerekir. Görüntüyü göndermek için Docker-Compose Push Çalıştır:
docker-compose push
Kayıt defterine gönderim birkaç dakika sürebilir.
Görüntünün kayıt defterinizde depolandığını doğrulamak için az ACR Repository Show komutunu çalıştırın:
az acr repository show --name <acrName> --repository azure-vote-front
Azure bağlamı oluştur
Azure Container Instances kapsayıcıları çalıştırmak için Docker komutlarını kullanmak için önce Azure 'da oturum açın:
docker login azure
İstendiğinde, Azure kimlik bilgilerinizi girin veya seçin.
Çalıştırarak bir acı bağlamı oluşturun docker context create aci . Bu bağlam Docker 'ı bir Azure aboneliğiyle ve kaynak grubuyla ilişkilendirir, böylece kapsayıcı örnekleri oluşturabilir ve yönetebilirsiniz. Örneğin, myacicontext adlı bir bağlam oluşturmak için:
docker context create aci myacicontext
İstendiğinde, Azure abonelik KIMLIĞINIZI seçin, sonra var olan bir kaynak grubunu seçin veya Yeni bir kaynak grubu oluşturun. Yeni bir kaynak grubu seçerseniz, sistem tarafından oluşturulan bir adla oluşturulur. Tüm Azure kaynakları gibi Azure kapsayıcı örneklerinin de bir kaynak grubuna dağıtılması gerekir. Kaynak grupları, ilgili Azure kaynaklarını düzenlemenizi ve yönetmenizi sağlar.
' docker context ls İ çalıştırarak, Docker bağlamlarınızın aci bağlamını eklediğini doğrulayın:
docker context ls
Uygulamayı Azure Container Instances dağıtma
Sonra ACI bağlamına geçin. Sonraki Docker komutları bu bağlamda çalışır.
docker context use myacicontext
docker compose upAzure Container Instances içinde uygulamayı başlatmak için öğesini çalıştırın. azure-vote-frontGörüntü, kapsayıcı Kayıt defterinizden çekilir ve kapsayıcı grubu Azure Container Instances oluşturulur.
docker compose up
Not
Bir ACI bağlamında Şu anda kullanılabilir olan Docker Compose komutları docker compose up ve ' dir docker compose down . dockerBu komutlarda ve arasında tire yok compose .
Kısa bir süre içinde, kapsayıcı grubu dağıtılır. Örnek çıktı:
[+] Running 3/3
⠿ Group azurevotingappredis Created 3.6s
⠿ azure-vote-back Done 10.6s
⠿ azure-vote-front Done 10.6s
docker psÇalışan kapsayıcıları ve kapsayıcı grubuna atanan IP adresini görmek için ' i çalıştırın.
docker ps
Örnek çıktı:
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
Çalışan uygulamayı bulutta görmek için, görüntülenecek IP adresini yerel bir Web tarayıcısına girin. Bu örnekte, girin 52.179.23.131 . Örnek uygulama aşağıdaki örnekte gösterilen şekilde yüklenir:
Ön uç kapsayıcısının günlüklerini görmek için Docker logs komutunu çalıştırın. Örnek:
docker logs azurevotingappredis_azure-vote-front
Dağıttığınız kapsayıcı grubunun özelliklerini ve durumunu görmek için Azure portal veya diğer Azure araçlarını da kullanabilirsiniz.
Uygulamayı denemeyi bitirdiğinizde uygulamayı ve kapsayıcıları şu ile durdurun docker compose down :
docker compose down
Bu komut Azure Container Instances kapsayıcı grubunu siler.
Sonraki adımlar
Bu öğreticide, Docker Compose kapsayıcılı bir uygulamayı yerel olarak çalıştırmadan yerel olarak çalışma moduna geçmek için Azure Container Instances. Şunları öğrendiniz:
- Azure kapsayıcı kayıt defteri oluşturma
- Uygulama kaynak kodunu GitHub’dan kopyalama
- Görüntü Docker Compose ve çok kapsayıcılı bir uygulamayı yerel olarak çalıştırmak için Docker Compose'i kullanma
- Uygulama görüntüsünü kapsayıcı kayıt defterinize itme
- Docker için Azure bağlamı oluşturma
- Uygulamayı Azure Container Instances
Kapsayıcıları, görüntüleri ve bağlamları geliştirmek, çalıştırmak Visual Studio Code ve yönetmek üzere tümleşik bir deneyim için de Docker uzantısını kullanabilirsiniz.
Çok kapsayıcılı bir grup belirtmek için Azure Container Instances Azure araçlarını kullanın. Örneğin, yaMLdosyası ile Azure CLI kullanarak bir kapsayıcı grubu dağıtma veya bir kapsayıcı şablonu kullanarak dağıtma öğretici Azure Resource Manager bakın.