在 AWS ECS EC2 集群中运行 docker 镜像

Posted

技术标签:

【中文标题】在 AWS ECS EC2 集群中运行 docker 镜像【英文标题】:Run docker image inside AWS ECS EC2 Cluster 【发布时间】:2021-08-10 20:27:30 【问题描述】:

我创建了一个启动类型为 EC2 的 AWS ECS 集群。基于 ec2 + windows 的集群。我必须在这个集群中运行 java 应用程序的 docker 映像。 我创建了基于 linux 的 docker 映像,但它在该 Windows 集群中不起作用。我收到以下错误: 状态原因CannotPullContainerError: 镜像操作系统“linux”不能在这个平台上使用

我的 docker 文件是:

FROM maven:3.6.1-jdk-8-alpine AS MAVEN_BUILD

复制./ ./

运行 mvn clean install -DskipTests

来自 openjdk:8

#VOLUME c:\Ctpl_VBA

ARG JAR_FILE=目标/*.jar 复制 --from=MAVEN_BUILD $JAR_FILE app.jar 曝光 8080 入口点 ["java","-jar","/app.jar"]

有什么方法可以在 AWS windows 集群中使用 docker 镜像运行我的 java 应用程序?

【问题讨论】:

【参考方案1】:

您不能在与主机上的操作系统不同的操作系统上运行映像。容器不是硬件虚拟化。他们与主机共享内核。如果您尝试重新使用基于 Windows 的集群(用于其他 Windows 容器)来运行 Linux 容器,您应该使用 Fargate 启动类型启动您的 Linux 容器。 Fargate 是一个完全托管的计算引擎,无需部署 EC2 容量即可运行容器。目前它仅适用于 Linux 容器,它可以满足您的需求。

【讨论】:

以上是关于在 AWS ECS EC2 集群中运行 docker 镜像的主要内容,如果未能解决你的问题,请参考以下文章

AWS EC2 实例未加入 ECS 集群

AWS EC2 ECS 在您的集群中未找到任何容器实例

AWS ECS 开发工具包。使用开发工具包为 ECS 集群注册新容器实例 (EC2)

AWS IAM 策略拒绝对自动扩展组或 ECS 集群内的任何 EC2 实例的权限

AWS - ECS - 如何在现有 ECS(带有 1 个 EC2)实例上重新部署更新的 Docker 映像?

从 ECS 集群中的 docker nodejs EC2 容器连接到 Redis Elasticache 集群