首页 > 解决方案 > 在 AWS 自动扩展组中启动 EC2 时,如何运行简单的 Docker 容器?

问题描述

$ terraform version
Terraform v0.14.4

我正在使用 Terraform 创建一个 AWS 自动缩放组,它通过同样由相同 Terraform 计划创建的启动模板成功启动了 EC2。user_data我在启动模板中添加了以下定义。我正在使用的 AMI 已经配置了 Docker,并且具有我需要的 Docker 映像。

user_data = filebase64("${path.module/docker_run.sh}")

并且docker_run.sh文件包含简单

docker run -p 80:3000 -d 1234567890.dkr.ecr.us-east-1.amazonaws.com/node-app:latest

但是,当我 ssh 到 EC2 实例时,容器没有运行。我错过了什么?

更新: 根据 Marcin 的评论,我在in /var/log/cloud-init-output.log

Jan 11 22:11:45 cloud-init[3871]: __init__.py[WARNING]: Unhandled non-multipart (text/x-not-multipart) userdata: 'docker run -p 80:3000 -d...'

标签: amazon-web-servicesdockeramazon-ec2terraformterraform-provider-aws

解决方案


AWS docs和您发布的内容中,可能的原因是您缺少/bin/bash以下内容docker_run.sh

用户数据 shell 脚本必须以 #! 字符和要读取脚本的解释器的路径(通常是 /bin/bash)。

因此你docker_run.sh应该是:

#!/bin/bash
docker run -p 80:3000 -d 1234567890.dkr.ecr.us-east-1.amazonaws.com/node-app:latest

如果仍然失败,请检查/var/log/cloud-init-output.log实例是否有错误。


推荐阅读