容器技术简化了您从本地环境到云或本地数据中心构建、测试和部署软件的方式。但是随着使用容器技术构建应用程序的好处,在构建多容器应用程序时存在手动启动和停止每个容器的问题。
为了解决这个问题,Docker Inc 创建了Docker Compose。您可以使用 Docker Compose 来简化多容器应用程序的运行,只需两个命令;docker-compose up
和docker-compose down
。
在本文中,您将学习
- Amazon EC2 是什么,
- 如何创建并连接到 Amazon EC2 实例,以及
- 如何在 EC2 上部署 Docker compose 应用程序
先决条件
要继续阅读本文,您必须具备以下条件:
- 终端基础知识。
- 一些使用 Docker 和 Docker Compose 的经验。
- 一个 AWS 账户 —在此处了解如何创建一个。
什么是亚马逊 EC2?
Amazon Elastic Compute Cloud (EC2) 为Amazon Web Services (AWS) 云中的几乎所有工作负载提供安全、可调整大小和可扩展的计算能力。通过使用 Amazon EC2,您可以消除预先投资硬件的开销,从而可以专注于更快地开发和部署您的应用程序。
借助 Amazon EC2,您可以根据需要启动任意数量的虚拟服务器(实例)、配置安全性和网络以及管理存储。此外,Amazon EC2 使您能够轻松地向上或向下扩展您的应用程序,以应对需求变化或流行高峰,从而减少预测流量的需要。
创建并连接到 Amazon EC2 实例
创建 AWS 账户后,您可以通过以下步骤创建并连接到 Amazon EC2 实例:
- 为实例选择所需的区域
- 导航到 EC2 控制台
- 启动实例
- 通过 SSH 从本地计算机连接到实例
选择您想要部署的区域
要在您的 AWS 控制台上选择一个区域,请单击下图右上角注释的下拉列表,然后选择您想要的区域。
您可能会问,“我怎么知道哪个地区最适合我的申请?” 要了解部署应用程序的最佳区域,请查看这篇关于“为工作负载选择区域时要考虑的事项”的文章。
导航到 EC2 控制台
选择所需的 AWS 区域后,要转到 EC2 控制台,请在搜索框中搜索“EC2”,如下图所示。
到达 EC2 控制台后,找到Launch Instance按钮并单击它以启动新的 EC2 实例启动流程。
启动实例
在 EC2 实例启动流程中,您需要使用以下内容配置您的实例:
应用程序和操作系统映像(Amazon 系统映像): Amazon 系统映像**(**AMI) 是一个模板,其中包含启动实例所需的软件配置(操作系统、应用程序服务器和应用程序)。
本文将使用具有下图所示配置的 Linux Ubuntu Server 22.04。
实例类型: ****实例类型是 CPU、内存、存储和网络容量的组合。有多种 EC2 实例类型可让您灵活地为您的应用程序选择适当的资源组合。本文将使用t2.micro,其 CPU 和内存如下图所示。
- 密钥对(登录):您可以使用密钥对从本地计算机远程安全地连接到您的实例。要创建密钥对,请单击创建新密钥对,如下图所示。
单击Create new key pair后,您将看到一个弹出窗口。在弹出窗口中,为您的密钥对命名并将其余配置保留为默认配置(如果您的本地计算机是 Windows 操作系统,请选择.ppk
私钥文件格式),然后单击创建密钥对。
点击Create key pair后,会自动下载一个.pem
私钥文件到你的电脑上;将私钥存储在计算机上安全且可访问的位置。您稍后将需要它来连接到您的实例。
- 网络设置:您可以将网络设置保留为默认设置。如下图所示的默认网络设置使用:
- 您的 AWS 账户的默认VPC 和子网,并启用为您的实例自动分配公共地址。
- 它还会创建一个新的安全组,即一组控制实例流量的防火墙规则。默认是允许来自任何地方的 SSH 流量;这适用于本文,但在生产用例中,您应该设置更严格的规则。
- 配置存储:您可以将存储配置保留为本文的默认配置。
最后的配置是高级设置,您可以忽略它们,因为它们超出了本文的范围。要了解有关它们的更多信息,请单击下图所示的信息文本。
完成上述所有配置后,单击启动实例并等待几分钟让您的实例启动,如下图所示。
然后单击上图中的查看所有实例并选择下图中的实例。
连接到您的 Amazon EC2 实例
选择您的 EC2 实例后,在顶部(如下图所示)单击连接。
单击连接后,您将看到一个页面,其中包含连接到您的实例的选项。本文将使用 SSH 客户端选项。.pem
使用在创建密钥对时下载的私钥,按照您在页面上看到的步骤进行操作,如下图所示。
完成上述步骤后,您应该连接到您的实例,如下图所示。
接下来,您将部署一个演示多容器 Docker Compose 应用程序,该应用程序具有 React 前端、Node.js 后端和 MongoDB 数据库容器,并使其可在 Internet 上访问。
在 Amazon EC2 上部署多容器 Docker Compose 应用程序
在部署 Docker Compose 应用程序之前,您需要:
- 首先在您的 EC2 实例上安装 Docker Engine 和 Docker compose。
- 然后在本文中,在您的实例上从 Github 克隆演示 Todo Docker Compose 应用程序
- 然后部署应用程序
在 Ubuntu EC2 实例上安装 Docker 引擎 安装 Docker 引擎
的最快方法是使用get.docker.comget-docker.sh
上的 bash 脚本。运行以下命令以在您的 EC2 实例上下载脚本。
$ curl -fsSL https://get.docker.com -o get-docker.sh
运行上述命令后,确认它下载了get-docker.sh
如下图所示。
要运行脚本,请运行以下命令:
$ sh get-docker.sh
一段时间后,Docker 将安装在 Ubuntu EC2 实例上。要确认安装运行$ docker
--``version
,您应该会看到 Docker 版本,如下图所示。
如果您使用不同的 AMI,请查看Docker 安装文档以了解如何在您选择的 AMI 上进行安装。
在 Ubuntu EC2 实例
上安装 Docker Compose 现在要安装 Docker Compose,运行以下命令从 Github 获取版本:\
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
然后使用以下命令使其可执行:
$ sudo chmod +x /usr/local/bin/docker-compose
完成后,当您运行时$ docker-compose -v
,您应该会看到刚刚安装的版本,如下图所示。
克隆演示 Docker Compose 应用
程序 您将部署的多容器 todo 应用程序是Awesome Docker Compose Github 存储库示例之一。要访问应用程序,请使用以下命令在您的实例上克隆存储库:
$ git clone https://github.com/docker/awesome-compose.git
克隆项目后,运行以下命令切换到react-express-mongodb
todo 应用程序所在的目录:
$ cd awesome-compose/react-express-mongodb
进入项目目录后,要使用上面注释的文件启动容器,请compose.yaml
运行:
$ docker compose up -d
在 Docker 拉取镜像并创建网络以供容器相互通信之后,您将看到如下图所示的输出。
要确认 3 个容器正在运行,运行$ docker ps
,您应该会看到类似于下图的输出。
接下来,您将测试部署以确保 todo 应用程序正常工作。
测试您的部署
您刚刚部署的应用程序在端口上进行对话,3000
但如果您3000
使用 EC2 实例的公共地址访问端口,您将无法查看它。这是因为当前仅允许来自 SSH 的入站流量的安全组设置。
要启用查看您的应用程序,在 EC2 实例控制台上,选择您的 EC2 实例,移动到安全选项卡,然后单击安全组,如下图所示。
单击安全组后,在下一个菜单中,单击Edit Inbound rules添加允许通过端口入站流量的规则3000
。
然后,添加规则,如下面的屏幕截图所示。
完成后,当您访问 Todo 应用程序时,your_instance_public_ip:3000
您应该会看到如下图所示的 Todo 应用程序。
结论
在本文中,您了解了 Amazon EC2 是什么、如何创建和连接到 Amazon EC2 实例以及如何在 EC2 上部署 Docker compose 应用程序。