Руководство. Создание образа контейнера для развертывания в службе "Экземпляры контейнеров Azure"

Служба "Экземпляры контейнеров Azure" позволяет развертывать контейнеры Docker в инфраструктуре Azure без подготовки виртуальных машин или применения службы более высокого уровня. С помощью этого руководства мы создадим пакет небольшого веб-приложения Node.js в образе контейнера, который можно запустить в службе "Экземпляры контейнеров Azure".

В этой статье (первой части цикла) вы:

  • клонировать исходный код приложения из GitHub;
  • создадите образ контейнера из источника приложения;
  • протестируете образ в локальном окружении Docker.

С помощью следующих руководств мы отправим образ в Реестр контейнеров Azure, а затем развернем его в службе "Экземпляры контейнеров Azure".

Перед началом

Для работы с этим руководством вам потребуются следующие ресурсы:

Azure CLI. Интерфейс командной строки Azure версии 2.0.29 или более поздней, установленный на локальном компьютере. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI.

Docker. Для выполнения действий, описанных в этом учебнике, требуется базовое понимание таких основных понятий Docker, как контейнеры и образы контейнеров, а также знание основных команд docker. Ознакомьтесь с общими сведениями о Docker и контейнерах.

Docker. Для работы с этим руководством требуется установить Docker локально. Docker предоставляет пакеты, которые настраивают среду Docker в ОС macOS, Windows и Linux.

Важно!

Так как Azure Cloud Shell не включает управляющую программу Docker, для работы с этим руководством необходимо установить среду разработки Azure CLI и модуль Docker на свой локальный компьютер. В этом руководстве Azure Cloud Shell не используется.

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

Пример приложения в этом руководстве включает простое веб-приложение, написанное на Node.js. Приложение является статической HTML-страницей и выглядит примерно так:

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

Используйте Git, чтобы клонировать репозиторий с примером приложения:

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

Вы также можете скачать ZIP-архив напрямую из GitHub.

Создание образа контейнера

На примере файла Dockerfile в примере приложения показано, как создается контейнер. Он запускается из официального образа Node.js на основе Alpine Linux, небольшого дистрибутива, который хорошо подходит для использования с контейнерами. Затем файлы приложения копируются в контейнер, при помощи диспетчера пакетов узла устанавливаются зависимости, после чего запускается приложение.

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:

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

Выходные данные команды docker build будут выглядеть примерно так (сокращено для удобства):

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, чтобы просмотреть созданный образ:

docker images

Созданный образ должен отображаться в списке:

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

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

Прежде чем развертывать контейнер в службе "Экземпляры контейнеров Azure", запустите его локально с помощью команды docker run, чтобы проверить, работает ли он. При помощи параметра -d можно запустить контейнер в фоновом режиме, а при помощи -p — сопоставить произвольный порт на компьютере с портом 80 в контейнере.

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

Выходные данные команды docker run отображают идентификатор запущенного контейнера, если команда выполнена успешно:

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

Откройте в браузере страницу http://localhost:8080, чтобы проверить, запущен ли контейнер. Вы должны увидеть похожую страницу:

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

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

В этом руководстве вы создали образ контейнера, который можно развернуть в службе "Экземпляры контейнеров Azure", и проверили его запуск локально. На этом этапе вы выполнили следующие задачи:

  • клонирование источника приложения из GitHub;
  • создание образа контейнера из источника приложения;
  • локальное тестирование контейнера.

Переходите к следующему руководству, чтобы узнать о хранении образов контейнеров в Реестре контейнеров Azure.