作者 | Nsikan Essien
译者 | 明知山
策划 | 丁晓昀  
最近,亚马逊云科技宣布 AWS CloudShell 为用户提供对 Docker Engine 的访问能力。通过这一集成,可以在本地对容器进行原型化,并在将其部署到 AWS 之前将其推送到注册中心。
AWS CloudShell 是一个基于 Web 的 Shell,用于通过命令行访问 AWS 环境中的资源。可以通过 AWS Console 访问,并使用相同的凭据进行预身份验证,允许用户执行 AWS CLI 命令来完成临时或重复的任务。除了 AWS CLI 之外,它还包含了各种常见的开发和运维工具,用于进行快速原型设计和实验。Docker Engine 是其预安装工具列表中最新添加的一个。
在 AWS CloudShell 中运行 Docker 命令(来源:AWS CloudShell 教程
AWS CloudShell 于 2020 年底推出,受到开发者社区的欢迎,为 AWS 基于 Web 的集成开发环境(IDE)AWS Cloud 9 提供了更简单、更便宜的替代方案。AWS Cloud 9 需要一个 EC2 实例,AWS CloudShell 会在会话之间免费提供 1 个配备 1 个 vCPU、2GB RAM 和 1GB 持久存储空间的实例。除此之外,它还预安装了各种工具,如 kubectl(Kubernetes 控制平面命令行界面)、Boto3(AWS Python SDK)等,使其非常适合用于运维任务和交互式开发。Docker 与在 AWS CloudShell 上预安装的 AWS CDK 或 AWS CLI 的结合为基础设施开发开辟了两个新途径。
首先,利用“DockerImageFunction”和“DockerImageCode” CDK Lambda 资源,现在可以从 AWS CloudShell 中部署执行 Docker 容器的 AWS Lambda 函数。
const { DockerImageFunction, DockerImageCode } = require('aws-cdk-lib/aws-lambda');const path = require('path');classDockerTutorialStackextendsStack{constructor(scope, id, props) {super(scope, id, props);// define lambda that uses a Docker containerconst dockerfileDir = path.join(__dirname);new DockerImageFunction(this, 'DockerTutorialFunction', {code: DockerImageCode.fromImageAsset(dockerfileDir),functionName: 'DockerTutorialFunction', }); }}new DockerTutorialStack(app, 'DockerTutorialStack');
部署引用 Docker 镜像的 CDK 栈(来源:AWS CloudShell 教程)
或者,现在可以使用 AWS CLI 在 AWS CloudShell 中构建 Docker 镜像并推送到注册表,以便在 AWS ECS、AWS EKS 或 AWS Lambda 中使用。
将 Docker 镜像推送到 Amazon ECR(来源:AWS CloudShell 教程)
随着 Docker Engine 的推出,AWS CloudShell 在功能上与 Azure 和 GCP 等同类产品更加接近。不过,与 GCP 或 Azure 的 5GB 限制相比,AWS CloudShell 的 1GB 持久存储限制意味着只能进行小容器原型设计或构建。用户 @MicheAngeCamhi 在 X 上分享他的经验,他写道:
. . . 本地存储被限制在 1 GB,而如果使用 Docker 镜像可能会很快就会用完!
事实上,我的构建大小一直在增长,现在因为‘Docker 空间不足’导致失败
最后,除了加利福尼亚、大阪和斯德哥尔摩,目前默认的 AWS CloudShell 区域都支持 Docker。更多指导信息可在 AWS CloudShell 的用户指南中找到。
查看英文原文
https://www.infoq.com/news/2024/01/docker-aws-cloudshell/
声明:本文为 InfoQ 翻译,未经许可禁止转载。
今日好文推荐
继续阅读
阅读原文