Samouczek: Tworzenie obrazu kontenera na potrzeby wdrożenia Azure Container InstancesTutorial: Create a container image for deployment to Azure Container Instances

Usługa Azure Container Instances umożliwia wdrażanie kontenerów Docker w infrastrukturze platformy Azure bez aprowizowania maszyn wirtualnych ani adaptowania usług wyższego poziomu.Azure Container Instances enables deployment of Docker containers onto Azure infrastructure without provisioning any virtual machines or adopting a higher-level service. Podczas pracy z tym samouczkiem spakujesz małą aplikację internetową środowiska Node.js do obrazu kontenera, który można uruchomić za pomocą usługi Azure Container Instances.In this tutorial, you package a small Node.js web application into a container image that can be run using Azure Container Instances.

W tym artykule, który jest pierwszą częścią trzyczęściowej serii, wykonasz następujące działania:In this article, part one of the series, you:

  • Klonowanie kodu źródłowego aplikacji z usługi GitHubClone application source code from GitHub
  • Tworzenie obrazu kontenera ze źródła aplikacjiCreate a container image from application source
  • Testowanie obrazu w lokalnym środowisku DockerTest the image in a local Docker environment

Podczas pracy z częścią drugą i trzecią samouczka przekażesz obraz do usługi Azure Container Registry, a następnie wdrożysz go w usłudze Azure Container Instances.In tutorial parts two and three, you upload your image to Azure Container Registry, and then deploy it to Azure Container Instances.

Przed rozpoczęciemBefore you begin

Aby ukończyć ten samouczek, musisz spełniać następujące wymagania:You must satisfy the following requirements to complete this tutorial:

Interfejs wiersza polecenia platformy Azure: Na komputerze lokalnym musi być zainstalowany interfejs wiersza polecenia platformy Azure w wersji 2.0.29 lub nowszej.Azure CLI: You must have Azure CLI version 2.0.29 or later installed on your local computer. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana.Run az --version to find the version. Jeśli konieczna będzie instalacja lub uaktualnienie interfejsu, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.If you need to install or upgrade, see Install the Azure CLI.

Docker: W tym samouczku założono podstawową wiedzę na temat najważniejszych pojęć platformy Docker, takich jak kontenery, obrazy kontenerów i podstawowe docker polecenia.Docker: This tutorial assumes a basic understanding of core Docker concepts like containers, container images, and basic docker commands. Aby uzyskać podstawowe informacje na temat platformy Docker i kontenerów, zobacz Docker — omówienie.For a primer on Docker and container basics, see the Docker overview.

Aparat platformy Docker: Do ukończenia tego samouczka potrzebny jest aparat platformy Docker zainstalowany lokalnie.Docker Engine: To complete this tutorial, you need Docker Engine installed locally. Platforma Docker zawiera pakiety, które konfigurują środowisko platformy Docker w systemach macOS, Windowsi Linux.Docker provides packages that configure the Docker environment on macOS, Windows, and Linux.

Ważne

Ponieważ usługa Azure Cloud Shell nie zawiera demona platformy Docker, w celu ukończenia tego samouczka musisz zainstalować na swoim komputerze lokalnym wiersz polecenia platformy Azure i aparat platformy Docker.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. W tym samouczku nie możesz korzystać z usługi Azure Cloud Shell.You cannot use the Azure Cloud Shell for this tutorial.

Pobieranie kodu aplikacjiGet application code

Przykładowa aplikacja w tym samouczku to prosta aplikacja internetowa skompilowana w języku Node. js.The sample application in this tutorial is a simple web app built in Node.js. Aplikacja służy za statyczną stronę HTML i wygląda podobnie do poniższego zrzutu ekranu:The application serves a static HTML page, and looks similar to the following screenshot:

Samouczek aplikacji wyświetlony w przeglądarce

Użyj narzędzia Git, aby sklonować repozytorium przykładowej aplikacji:Use Git to clone the sample application's repository:

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

Możesz również pobrać archiwum zip bezpośrednio z usługi GitHub.You can also download the ZIP archive from GitHub directly.

Kompilowanie obrazu konteneraBuild the container image

Plik Dockerfile w przykładowej aplikacji przedstawia sposób tworzenia kontenera.The Dockerfile in the sample application shows how the container is built. Rozpoczyna się od oficjalnego obrazu Node. js opartego na systemie Alpine Linux, małej dystrybucji, która dobrze nadaje się do użycia z kontenerami.It starts from an official Node.js image based on Alpine Linux, a small distribution that is well suited for use with containers. Kolejny krok to skopiowanie plików aplikacji do kontenera, zainstalowanie zależności za pomocą programu Node Package Manager i na koniec uruchomienie aplikacji.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

Użyj polecenia Docker Build , aby utworzyć obraz kontenera i oznaczyć go jako ACI-samouczek-App: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

Dane wyjściowe polecenia Docker Build są podobne do następujących (obcięte na potrzeby czytelności):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

Użyj polecenia Docker images , aby wyświetlić utworzony obraz:Use the docker images command to see the built image:

docker images

Nowo utworzony obraz powinien zostać wyświetlony na liście: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

Uruchamianie kontenera w środowisku lokalnymRun the container locally

Przed wdrożeniem kontenera do Azure Container Instances należy uruchomić go lokalnie i upewnić się, że działa.Before you deploy the container to Azure Container Instances, use docker run to run it locally and confirm that it works. Przełącznik -d umożliwia uruchamianie kontenera w tle, a element -p — mapowanie dowolnego portu komputera do portu 80 w kontenerze.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

Dane wyjściowe z polecenia docker run wyświetlają identyfikator uruchomionego kontenera, jeśli polecenie zakończyło się pomyślnie: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

Teraz przejdź do adresu http://localhost:8080 w przeglądarce, aby potwierdzić, że kontener działa.Now, navigate to http://localhost:8080 in your browser to confirm that the container is running. Powinna zostać wyświetlona strona internetowa podobna do poniższej:You should see a web page similar to the following:

Uruchamianie aplikacji lokalnie w przeglądarce

Następne krokiNext steps

Podczas pracy z samouczkiem utworzono obraz kontenera, który można wdrożyć w usłudze Azure Container Instances i zweryfikować jego działanie lokalnie.In this tutorial, you created a container image that can be deployed in Azure Container Instances, and verified that it runs locally. Jak dotąd wykonano następujące czynności:So far, you've done the following:

  • Klonowanie źródła aplikacji z usługi GitHubCloned the application source from GitHub
  • Tworzenie obrazu kontenera ze źródła aplikacjiCreated a container image from the application source
  • Testowanie kontenera w środowisku lokalnymTested the container locally

Przejdź do kolejnego samouczka w serii, aby dowiedzieć się więcej o przechowywaniu obrazów kontenera w usłudze Azure Container Registry:Advance to the next tutorial in the series to learn about storing your container image in Azure Container Registry: