
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://circleci.com/gh/pottava/ecs-task-runner.svg?style=svg](https://circleci.com/gh/pottava/ecs-task-runner)
http://dockeri.co/image/pottava/ecs-task-runner](https://hub.docker.com/r/pottava/ecs-task-runner/)
支持的标签及对应的Dockerfile链接:
・latest (https://github.com/pottava/ecs-task-runner/blob/master/versions/3.0/Dockerfile)
・3.0 (https://github.com/pottava/ecs-task-runner/blob/master/versions/3.0/Dockerfile)
・2.3 (https://github.com/pottava/ecs-task-runner/blob/master/versions/2.3/Dockerfile)
・1 (https://github.com/pottava/ecs-task-runner/blob/master/versions/1.2/Dockerfile)
这是一款适用于AWS Fargate的同步任务运行器。它能在Fargate上运行Docker容器并等待其完成,然后从CloudWatch Logs返回容器的标准输出日志。所有所需资源均为临时创建,并在任务完成后自动清理。
sh$ curl -Lo ecs-task-runner https://github.com/pottava/ecs-task-runner/releases/download/3.0/ecs-task-runner_darwin_amd64 \ && chmod +x ecs-task-runner
sh$ curl -Lo ecs-task-runner https://github.com/pottava/ecs-task-runner/releases/download/3.0/ecs-task-runner_linux_amd64 \ && chmod +x ecs-task-runner
consolego get github.com/pottava/ecs-task-runner/...
consoledocker pull docker.xuanyuan.run/pottava/ecs-task-runner
| 环境变量 | 参数 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|---|
| AWS_ACCESS_KEY_ID | access-key, a | AWS API访问的访问密钥 | 否 | |
| AWS_SECRET_ACCESS_KEY | secret-key, s | AWS API访问的密钥 | 否 | |
| AWS_DEFAULT_REGION | region, r | AWS区域 | 否 | us-east-1 |
| AWS_PROFILE | profile | AWS配置文件名称 | 否 | default |
| AWS_ASSUME_ROLE | assume-role | 要扮演的IAM角色ARN | 否 | |
| AWS_MFA_SERIAL_NUMBER | mfa-serial-num | MFA设备序列号 | 否 | |
| AWS_MFA_TOKEN | mfa-token | MFA令牌 | 否 | |
| ECS_CLUSTER | cluster, c | Amazon ECS集群名称 | 否 | |
| EXEC_ROLE_NAME | exec-role-name | 执行角色名称 | 否 | ecs-task-runner |
| TASK_TIMEOUT | timeout, t | 任务超时时间(分钟) | 否 | 30 |
| EXTENDED_OUTPUT | extended-output | 是否返回元数据(True/False) | 否 | false |
run命令专用参数| 环境变量 | 参数 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|---|
| DOCKER_IMAGE | 要在ECS上运行的Docker镜像 | 是 | ||
| FARGATE_SPOT | spot | 是否使用Fargate Spot(True/False) | 否 | false |
| FORCE_ECR | force-ecr, f | 是否允许使用ECR短名称(True/False) | 否 | false |
| ENTRYPOINT | entrypoint | 覆盖镜像的ENTRYPOINT | 否 | |
| COMMAND | command | 覆盖镜像的CMD | 否 | |
| PORT | port, p | 发布端口 | 否 | |
| ENVIRONMENT | environment, e | 为容器添加环境变量 | 否 | |
| USER | docker-user | 容器内运行用户 | 否 | |
| LABEL | label, l | 为容器添加标签 | 否 | |
| SUBNETS | subnets | Fargate子网 | 否 | |
| SECURITY_GROUPS | security-groups | Fargate安全组 | 否 | |
| TASKDEF_FAMILY | taskdef-family | ECS任务定义家族名称 | 否 | ecs-task-runner |
| TASK_ROLE | task-role-arn | 任务IAM角色ARN | 否 | |
| CPU | cpu | Fargate vCPU请求量 | 否 | 256 |
| MEMORY | memory | Fargate内存请求量(MB) | 否 | 512 |
| NUMBER | number, n | 任务数量 | 否 | 1 |
| PRIVATE_REGISTRY_USER | user | 私有仓库用户名 | 否 | |
| PRIVATE_REGISTRY_PASSWORD | password | 私有仓库密码 | 否 | |
| KMS_CUSTOMKEY_ID | kms-key-id | SecretsManager的KMS自定义密钥ID | 否 | |
| ASSIGN_PUBLIC_IP | assign-pub-ip | 是否分配公网IP(True/False) | 否 | true |
| READONLY_ROOOTFS | readonly-rootfs | 是否将根文件系统设为只读(True/False) | 否 | false |
| ASYNC | async | 是否异步运行(不等待完成,True/False) | 否 | false |
stop命令专用参数| 环境变量 | 参数 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|---|
| REQUEST_ID | 要停止的资源ID | 是 | ||
| TASK_ARN | task-arn | 要停止的任务ARN | 否 |
console$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE $ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY $ ecs-task-runner run alpine --entrypoint env { "container-1": [ "2018-09-23T11:42:01+09:00: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "2018-09-23T11:42:01+09:00: HOSTNAME=ip-172-31-40-206.us-east-1.compute.internal", "2018-09-23T11:42:01+09:00: AWS_DEFAULT_REGION=ap-northeast-1", "2018-09-23T11:42:01+09:00: AWS_REGION=ap-northeast-1", "2018-09-23T11:42:01+09:00: HOME=/root" ] }
console$ unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY $ $ export AWS_PROFILE=project-alpha-dev $ export AWS_ASSUME_ROLE=arn:aws:iam::123456789012:role/rolename $ export AWS_MFA_SERIAL_NUMBER=arn:aws:iam::123456789012:mfa/mfaname $ export AWS_MFA_TOKEN=123456 $ $ ecs-task-runner run alpine --entrypoint env { "container-1": [ "2018-09-23T11:42:01+09:00: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "2018-09-23T11:42:01+09:00: HOSTNAME=ip-172-31-40-206.us-east-1.compute.internal", "2018-09-23T11:42:01+09:00: AWS_DEFAULT_REGION=ap-northeast-1", "2018-09-23T11:42:01+09:00: AWS_REGION=ap-northeast-1", "2018-09-23T11:42:01+09:00: HOME=/root" ] } $ echo $? 0
console$ ecs-task-runner run alpine --entrypoint sh,-c --command "exit 255" { "container-1": [] } $ echo $? 255
console$ ecs-task-runner run nginx --async -p 80 --security-groups sg-public-80-abcdefg { "RequestID": "ecs-task-runner-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "Tasks": [ { "PublicIP": "xx.xxx.xxx.xx", "TaskARN": "arn:aws:ecs:us-east-1:xxxxxxxxxxxx:task/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } ] }
console$ ecs-task-runner stop ecs-task-runner-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx { "container-1": [ "2018-09-23T22:34:37+09:00: zzz.zz.z.zzz - - [23/Sep/2018:13:34:37 +0000] \"GET / HTTP/1.1\" 200 612 \"-\" \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0 Safari/537.36\" \"-\"" ] }
consoleecs-task-runner -a AKIAIOSFODNN7EXAMPLE -s wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY run sample/image
consoleexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY ecs-task-runner run sample/image
consoleexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY ecs-task-runner run --force-ecr my-ecr/image
consoleexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export PRIVATE_REGISTRY_USER=user export PRIVATE_REGISTRY_PASSWORD=password ecs-task-runner run sample/secret
consoleexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY docker run --rm -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY docker.xuanyuan.run/pottava/ecs-task-runner sample/image
若命令返回非零退出码,可使用--extended-output参数获取元数据以分析失败原因:
consoleexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY ecs-task-runner run sample/image --extended-output
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务