Руководство по Создание образа контейнера для развертывания в службе "Экземпляры контейнеров Azure"Tutorial: Create a container image for deployment to Azure Container Instances

Служба "Экземпляры контейнеров Azure" позволяет развертывать контейнеры Docker в инфраструктуре Azure без подготовки виртуальных машин или применения службы более высокого уровня.Azure Container Instances enables deployment of Docker containers onto Azure infrastructure without provisioning any virtual machines or adopting a higher-level service. С помощью этого руководства мы создадим пакет небольшого веб-приложения Node.js в образе контейнера, который можно запустить в службе "Экземпляры контейнеров Azure".In this tutorial, you package a small Node.js web application into a container image that can be run using Azure Container Instances.

В этой статье (первой части цикла) вы:In this article, part one of the series, you:

  • клонировать исходный код приложения из GitHub;Clone application source code from GitHub
  • создадите образ контейнера из источника приложения;Create a container image from application source
  • протестируете образ в локальном окружении Docker.Test the image in a local Docker environment

С помощью следующих руководств мы отправим образ в Реестр контейнеров Azure, а затем развернем его в службе "Экземпляры контейнеров Azure".In tutorial parts two and three, you upload your image to Azure Container Registry, and then deploy it to Azure Container Instances.

Перед началомBefore you begin

Для работы с этим руководством вам потребуются следующие ресурсы:You must satisfy the following requirements to complete this tutorial:

Azure CLI. Интерфейс командной строки Azure версии 2.0.29 или более поздней, установленный на локальном компьютере.Azure CLI: You must have Azure CLI version 2.0.29 or later installed on your local computer. Чтобы узнать версию, выполните команду az --version.Run az --version to find the version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI.If you need to install or upgrade, see Install the Azure CLI.

Docker. Для выполнения действий, описанных в этом учебнике, требуется базовое понимание таких основных понятий Docker, как контейнеры и образы контейнеров, а также знание основных команд docker.Docker: This tutorial assumes a basic understanding of core Docker concepts like containers, container images, and basic docker commands. Ознакомьтесь с общими сведениями о Docker и контейнерах.For a primer on Docker and container basics, see the Docker overview.

Docker. Для работы с этим руководством требуется установить Docker локально.Docker: To complete this tutorial, you need Docker installed locally. Docker предоставляет пакеты, которые настраивают среду Docker в ОС macOS, Windows и Linux.Docker provides packages that configure the Docker environment on macOS, Windows, and Linux.

Важно!

Так как Azure Cloud Shell не включает управляющую программу Docker, для работы с этим руководством необходимо установить среду разработки Azure CLI и модуль 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. В этом руководстве Azure Cloud Shell не используется.You cannot use the Azure Cloud Shell for this tutorial.

Получение кода приложенияGet application code

Пример приложения в этом руководстве включает простое веб-приложение, написанное на Node.js.The sample application in this tutorial is a simple web app built in Node.js. Приложение является статической HTML-страницей и выглядит примерно так:The application serves a static HTML page, and looks similar to the following screenshot:

Приложение из руководства, отображающееся в браузере

Используйте Git, чтобы клонировать репозиторий с примером приложения:Use Git to clone the sample application's repository:

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

Вы также можете скачать ZIP-архив напрямую из GitHub.You can also download the ZIP archive from GitHub directly.

Создание образа контейнераBuild the container image

На примере файла Dockerfile в примере приложения показано, как создается контейнер.The Dockerfile in the sample application shows how the container is built. Он запускается из официального образа Node.js на основе Alpine Linux, небольшого дистрибутива, который хорошо подходит для использования с контейнерами.It starts from an official Node.js image based on Alpine Linux, a small distribution that is well suited for use with containers. Затем файлы приложения копируются в контейнер, при помощи диспетчера пакетов узла устанавливаются зависимости, после чего запускается приложение.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

Используйте команду docker build, чтобы создать образ контейнера, и добавьте тег aci-tutorial-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

Выходные данные команды docker build будут выглядеть примерно так (сокращено для удобства):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

Выполните команду docker images, чтобы просмотреть созданный образ:Use the docker images command to see the built image:

docker images

Созданный образ должен отображаться в списке: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

Локальный запуск контейнераRun the container locally

Прежде чем развертывать контейнер в службе "Экземпляры контейнеров Azure", запустите его локально с помощью команды docker run, чтобы проверить, работает ли он.Before you deploy the container to Azure Container Instances, use docker run to run it locally and confirm that it works. При помощи параметра -d можно запустить контейнер в фоновом режиме, а при помощи -p — сопоставить произвольный порт на компьютере с портом 80 в контейнере.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

Выходные данные команды docker run отображают идентификатор запущенного контейнера, если команда выполнена успешно: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

Откройте в браузере страницу http://localhost:8080, чтобы проверить, запущен ли контейнер.Now, navigate to http://localhost:8080 in your browser to confirm that the container is running. Вы должны увидеть похожую страницу:You should see a web page similar to the following:

Локальный запуск приложения в браузере

Дальнейшие действияNext steps

В этом руководстве вы создали образ контейнера, который можно развернуть в службе "Экземпляры контейнеров Azure", и проверили его запуск локально.In this tutorial, you created a container image that can be deployed in Azure Container Instances, and verified that it runs locally. На этом этапе вы выполнили следующие задачи:So far, you've done the following:

  • клонирование источника приложения из GitHub;Cloned the application source from GitHub
  • создание образа контейнера из источника приложения;Created a container image from the application source
  • локальное тестирование контейнера.Tested the container locally

Переходите к следующему руководству, чтобы узнать о хранении образов контейнеров в Реестре контейнеров Azure.Advance to the next tutorial in the series to learn about storing your container image in Azure Container Registry: