教程:创建要部署到 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 提供用于在 macOS、Windows 和 Linux 上配置 Docker 环境的包。
重要
必须在本地计算机上同时安装 Azure CLI 和 Docker 引擎才能完成本教程。
获取应用程序代码
本教程中的示例应用程序是使用 Node.js 生成的简单 Web 应用。 该应用程序提供一个静态 HTML 页面,如以下屏幕截图所示:
使用 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
,确认容器是否正在运行。 应会看到如以下屏幕截图所示的网页:
后续步骤
在本教程中,我们已创建一个可以部署到 Azure 容器实例的容器映像,并已验证它在本地运行。 到目前为止,你已完成下列步骤:
- 从 GitHub 克隆应用程序源
- 从应用程序源创建容器映像
- 在本地测试容器
请转到本系列中的下一篇教程,了解如何在 Azure 容器注册表中存储容器映像: