Руководство. Создание образа контейнера для развертывания в Экземпляры контейнеров 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.