Öğretici: Azure Container Instances'a dağıtılacak için kapsayıcı görüntüsü oluşturmaTutorial: Create a container image for deployment to Azure Container Instances

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.Azure Container Instances enables deployment of Docker containers onto Azure infrastructure without provisioning any virtual machines or adopting a higher-level service. 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.In this tutorial, you package a small Node.js web application into a container image that can be run using Azure Container Instances.

Serinin ilk bölümündeki bu makalede şunları yapacaksınız:In this article, part one of the series, you:

  • Uygulama kaynak kodunu GitHub’dan kopyalamaClone application source code from GitHub
  • Uygulama kaynağından kapsayıcı görüntüsü oluşturmaCreate a container image from application source
  • Görüntüyü yerel bir Docker ortamında test etmeTest the image in a local Docker environment

Öğ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.In tutorial parts two and three, you upload your image to Azure Container Registry, and then deploy it to Azure Container Instances.

Başlamadan önceBefore you begin

Bu öğreticiyi tamamlamak için aşağıdaki gereksinimleri karşılamanız gerekir:You must satisfy the following requirements to complete this tutorial:

Azure CLI: Daha sonra yerel bilgisayarınızda yüklü veya Azure CLI 2.0.29 sürüm olmalıdır.Azure CLI: You must have Azure CLI version 2.0.29 or later installed on your local computer. Sürümü bulmak için az --version komutunu çalıştırın.Run az --version to find the version. Yükleme veya yükseltme yapmanız gerekirse bkz. Azure CLI'yı yükleme.If you need to install or upgrade, see Install the Azure CLI.

Docker: Bu öğreticide çekirdek temel bir anlayış gibi kapsayıcılar, kapsayıcı görüntüleri ve temel Docker kavramları varsayılır docker komutları.Docker: This tutorial assumes a basic understanding of core Docker concepts like containers, container images, and basic docker commands. Docker ve kapsayıcı temel bilgileri ile ilgili giriş yapmak için Docker’a genel bakış bölümüne bakın.For a primer on Docker and container basics, see the Docker overview.

Docker altyapısı: Bu öğreticiyi tamamlamak için Docker altyapısının'ın yerel olarak yüklü olması gerekir.Docker Engine: To complete this tutorial, you need Docker Engine installed locally. Docker, macOS, Windows ve Linux üzerinde Docker ortamını yapılandıran paketler sağlar.Docker provides packages that configure the Docker environment on macOS, Windows, and Linux.

Ö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.Because the Azure Cloud shell does not include the Docker daemon, you must install both the Azure CLI and Docker Engine on your local computer to complete this tutorial. Bu öğretici için Azure Cloud Shell kullanamazsınız.You cannot use the Azure Cloud Shell for this tutorial.

Uygulama kodunu almaGet application code

Bu öğreticideki örnek uygulama, Node.js ile derlenen basit bir web uygulamasıdır.The sample application in this tutorial is a simple web app built in Node.js. Uygulama, statik bir HTML sayfası görevi görür ve aşağıdaki ekran görüntüsüne benzer:The application serves a static HTML page, and looks similar to the following screenshot:

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

Örnek uygulamanın deposunu kopyalamak için Git kullanın:Use Git to clone the sample application's repository:

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

Doğrudan GitHub’dan da ZIP arşivini indirebilirsiniz.You can also download the ZIP archive from GitHub directly.

Kapsayıcı görüntüsünü oluşturmaBuild the container image

Örnek uygulamada bulunan Dockerfile, kapsayıcının nasıl derlendiğini gösterir.The Dockerfile in the sample application shows how the container is built. 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.It starts from an official Node.js image based on Alpine Linux, a small distribution that is well suited for use with containers. 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.It then copies the application files into the container, installs dependencies using the Node Package Manager, and finally, starts the application.

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:Use the docker build command to create the container image and tag it as aci-tutorial-app:

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):Output from the docker build command is similar to the following (truncated for readability):

$ 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:Use the docker images command to see the built image:

docker images

Yeni derlenen görüntü listede görünmelidir:Your newly built image should appear in the list:

$ 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ırmaRun the container locally

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.Before you deploy the container to Azure Container Instances, use docker run to run it locally and confirm that it works. -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.The -d switch lets the container run in the background, while -p allows you to map an arbitrary port on your computer to port 80 in the container.

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:Output from the docker run command displays the running container's ID if the command was successful:

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

Şimdi kapsayıcının çalıştırıldığını onaylamak için tarayıcınızda http://localhost:8080 adresine gidin.Now, navigate to http://localhost:8080 in your browser to confirm that the container is running. Aşağıdakine benzer bir web sayfası görmeniz gerekir:You should see a web page similar to the following:

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

Sonraki adımlarNext steps

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.In this tutorial, you created a container image that can be deployed in Azure Container Instances, and verified that it runs locally. Şu ana kadar aşağıdakileri yaptınız:So far, you've done the following:

  • GitHub’dan uygulama kaynağı kopyalandıCloned the application source from GitHub
  • Uygulama kaynağından bir kapsayıcı görüntüsü oluşturulduCreated a container image from the application source
  • Kapsayıcı yerel olarak test edildiTested the container locally

Kapsayıcı görüntünüzü Azure Container Registry’de depolama hakkında bilgi edinmek için sonraki öğreticiye geçin:Advance to the next tutorial in the series to learn about storing your container image in Azure Container Registry: