教程:创建要部署到 Azure 容器实例的容器映像

使用 Azure 容器实例可将 Docker 容器部署到 Azure 基础结构,不需要预配任何虚拟机,也不需要采用更高级别的服务。 在本教程中,我们将一个小型 Node.js Web 应用程序打包成可以使用 Azure 容器实例运行的容器映像。

本文(本系列的第一部分)将介绍如何:

  • 克隆 GitHub 中的应用程序源代码
  • 从应用程序源创建容器映像
  • 在本地 Docker 环境中测试映像

在本教程的第二和第三部分,需要将该映像上传到 Azure 容器注册表,然后将其部署到 Azure 容器实例。

在开始之前

必须满足以下要求才能完成本教程:

Azure CLI:必须在本地计算机上安装 Azure CLI 2.0.29 或更高版本。 运行 az --version 即可查找版本。 如需进行安装或升级,请参阅安装 Azure CLI

Docker:本教程假设读者基本了解核心 Docker 概念,如容器、容器映像和基本的 docker 命令。 有关 Docker 和容器的基础知识,请参阅 Docker 概述

Docker:要完成本教程,需在本地安装 Docker。 Docker 提供用于在 macOSWindowsLinux 上配置 Docker 环境的包。

重要

必须在本地计算机上同时安装 Azure CLI 和 Docker 引擎才能完成本教程。

获取应用程序代码

本教程中的示例应用程序是使用 Node.js 生成的简单 Web 应用。 该应用程序提供一个静态 HTML 页面,如以下屏幕截图所示:

Tutorial app shown in browser

使用 Git 克隆示例应用程序的存储库:

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

也可以从 GitHub 直接下载 ZIP 存档

生成容器映像

示例应用程序中的 Dockerfile 演示如何生成容器。 它从基于 Alpine Linux正式 Node.js 映像(适用于容器的小型分发版)开始演示。 然后,它将应用程序文件复制到容器中,使用 Node 包管理器安装依赖项,最后启动应用程序。

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 命令成功,其输出会显示正在运行的容器的 ID:

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

现在,请在浏览器中导航到 http://localhost:8080 ,确认容器是否正在运行。 应会看到如下所示的网页:

Running the app locally in the browser

后续步骤

在本教程中,我们已创建一个可以部署到 Azure 容器实例的容器映像,并已验证它在本地运行。 到目前为止,我们已完成以下操作:

  • 从 GitHub 克隆应用程序源
  • 从应用程序源创建容器映像
  • 在本地测试容器

请转到本系列中的下一篇教程,了解如何在 Azure 容器注册表中存储容器映像: