Öğretici: Azure Container Instances dağıtımı için kapsayıcı görüntüsü oluşturma

Azure Container Instances, Docker kapsayıcılarının herhangi bir sanal makine sağlama veya herhangi bir üst düzey hizmet benimsenmesi gerekmeden Azure altyapısına dağıtılmasını sağlar. Bu öğreticide, Azure Container Instances kullanılarak çalıştırılabilen bir kapsayıcı görüntüsüne küçük bir Node.js web uygulamasını paketlersiniz.

Serinin ilk bölümündeki bu makalede şunları yapacaksınız:

  • Uygulama kaynak kodunu GitHub’dan kopyalama
  • Uygulama kaynağından kapsayıcı görüntüsü oluşturma
  • Görüntüyü yerel bir Docker ortamında test etme

Öğreticinin ikinci ve üçüncü bölümünde, görüntünüzü Azure Container Registry’ye yükler ve Azure Container Instances’a dağıtırsınız.

Başlamadan önce

Bu öğreticiyi tamamlamak için aşağıdaki gereksinimleri karşılamanız gerekir:

Azure CLI: Yerel bilgisayarınızda Azure CLI 2.0.29 veya sonraki bir sürümü yüklenmiş olmalıdır. Sürümü bulmak için az --version komutunu çalıştırın. Yükleme veya yükseltme yapmanız gerekirse bkz. Azure CLI’yı yükleme.

Docker: Bu öğreticide kapsayıcılar, kapsayıcı görüntüleri ve temel docker komutları gibi temel Docker kavramları hakkında bilgi sahibi olduğunuz varsayılmıştır. Docker ve kapsayıcı temel bilgileri ile ilgili giriş yapmak için Docker’a genel bakış bölümüne bakın.

Docker: Bu öğreticiyi tamamlamak için Docker'ın yerel olarak yüklenmesi gerekir. Docker, macOS, Windows ve Linux üzerinde Docker ortamını yapılandıran paketler sağlar.

Önemli

Azure Cloud shell, Docker programını içermediğinden bu öğreticiyi tamamlamak için yerel bilgisayarınıza hem Azure CLI’yi hem de Docker Altyapısı’nı yüklemeniz gerekir. Bu öğretici için Azure Cloud Shell kullanamazsınız.

Uygulama kodunu alma

Bu öğreticideki örnek uygulama, Node.js ile derlenen basit bir web uygulamasıdır. Uygulama, statik bir HTML sayfası görevi görür ve aşağıdaki ekran görüntüsüne benzer:

Tarayıcıda gösterilen öğretici uygulama

Örnek uygulamanın deposunu kopyalamak için Git kullanın:

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

Doğrudan GitHub’dan da ZIP arşivini indirebilirsiniz.

Kapsayıcı görüntüsünü oluşturma

Örnek uygulamada bulunan Dockerfile, kapsayıcının nasıl derlendiğini gösterir. Kapsayıcılarla kullanmaya uygun küçük bir dağıtım olan Alpine Linux tabanlı resmi bir Node.js görüntüsünden başlatılır. Ardından uygulama dosyalarını kapsayıcıya kopyalar, Node Package Manager’ı kullanarak bağımlılıkları yükler ve son olarak uygulamayı başlatır.

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

Kapsayıcı görüntüsünü oluşturmak için docker build komutunu kullanın ve görüntüyü aci-tutorial-app olarak etiketleyin:

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

docker build komutunun çıktısı aşağıdakine benzer (okunabilirliği artırmak için kesilmiştir):

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

Oluşturulan görüntüyü görmek için docker images komutunu kullanın:

docker images

Yeni derlenen görüntü listede görünmelidir:

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

Kapsayıcıyı yerel olarak çalıştırma

Kapsayıcıyı Azure Container Instances’a dağıtmadan önce docker run komutunu kullanarak bunu yerel olarak çalıştırın ve çalışır durumda olduğunu doğrulayın. -d anahtarı kapsayıcının arka planda çalışmasını sağlar. -p ise işleminizdeki rastgele bağlantı noktalarından birini kapsayıcının 80 numaralı bağlantı noktasına eşlemenizi sağlar.

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

Komut başarılı olduysa docker run komutundan elde edilen çıktı, çalıştırılan kapsayıcının kimliğini görüntüler:

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

Şimdi kapsayıcının çalıştırıldığını onaylamak için tarayıcınızda http://localhost:8080 adresine gidin. Aşağıdakine benzer bir web sayfası görmeniz gerekir:

Uygulamayı tarayıcıda yerel olarak çalıştırma

Sonraki adımlar

Bu öğreticide, Azure Container Instances’ta dağıtılabilen bir kapsayıcı görüntüsü oluşturdunuz ve bunun yerel olarak çalıştırıldığını doğruladınız. Şu ana kadar aşağıdakileri yaptınız:

  • GitHub’dan uygulama kaynağı kopyalandı
  • Uygulama kaynağından bir kapsayıcı görüntüsü oluşturuldu
  • Kapsayıcı yerel olarak test edildi

Kapsayıcı görüntünüzü Azure Container Registry’de depolama hakkında bilgi edinmek için sonraki öğreticiye geçin: