You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从ECS仓库运行Docker镜像?完成前置操作后如何启动服务器?

别急,我一步步给你捋清楚这些问题:

核心结论先给你
  • 不需要再次推送镜像:只要你没修改镜像内容,之前推到ECS仓库(ECR)或Docker Hub的版本完全可用,直接拉取就行。
  • 镜像不会自动运行:得手动或者配置自动化流程来启动容器,EC2实例不会自己识别仓库里的镜像并启动。
  • 脚本是可选但推荐的:手动敲命令也能启动,但脚本可以简化后续的启动/更新操作。
具体操作步骤

第一步:给EC2实例装Docker

你的EC2要运行Docker容器,首先得确保实例上有Docker环境。用SSH登录到你的EC2实例(命令类似 ssh -i "你的密钥文件.pem" ec2-user@你的公网IP),然后根据系统类型安装:

如果你用的是Amazon Linux 2:

sudo yum update -y
sudo amazon-linux-extras install docker -y
sudo service docker start
sudo usermod -aG docker ec2-user

安装完退出SSH再重新登录,这样你不用每次都加sudo就能用Docker命令。

如果你用的是Ubuntu:

sudo apt update -y
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker ubuntu

第二步:从仓库拉取镜像到EC2

不管是从ECR还是Docker Hub,都需要先把镜像拉到EC2本地:

从Docker Hub拉取:

docker pull 你的Docker Hub用户名/镜像名:标签

比如 docker pull grabury/my-server:v1

从Amazon ECR拉取:

首先得让EC2有权限访问ECR,要么给EC2实例的IAM角色加AmazonEC2ContainerRegistryReadOnly权限,要么在EC2上配置AWS凭证。然后执行登录命令:

aws ecr get-login-password --region 你的AWS区域 | docker login --username AWS --password-stdin 你的ECR仓库地址

比如你的ECR地址是123456789012.dkr.ecr.us-east-1.amazonaws.com,然后拉取镜像:

docker pull 你的ECR仓库地址/镜像名:标签

第三步:启动Docker容器(运行服务器)

拉取完镜像后,用docker run命令启动容器,假设你的服务器在容器内用8080端口,要映射到EC2的80端口(公网可访问):

docker run -d -p 80:8080 --name my-server-container 镜像名:标签

参数解释:

  • -d:让容器在后台运行,不会占用你的SSH会话
  • -p 主机端口:容器端口:把EC2的公网端口映射到容器内的服务器端口,这样外部就能通过EC2公网IP访问你的服务器
  • --name:给容器起个好记的名字,方便后续管理

启动后可以用docker ps查看容器是否正常运行,用docker logs my-server-container查看服务器日志,排查启动问题。

第四步:配置自动启动(可选但强烈推荐)

如果你希望EC2重启后容器能自动启动,运行容器时加上--restart always参数:

docker run -d -p 80:8080 --restart always --name my-server-container 镜像名:标签

如果已经启动了容器,也可以事后修改重启策略:

docker update --restart always my-server-container

关于脚本配置

如果你觉得每次手动敲命令麻烦,可以写个简单的shell脚本(比如start-server.sh)来一键完成拉取、更新、启动操作:

#!/bin/bash

# 拉取最新镜像(如果有更新的话)
docker pull 你的镜像名:标签

# 停止并删除旧容器(如果存在,不存在就忽略错误)
docker stop my-server-container || true
docker rm my-server-container || true

# 启动新容器
docker run -d -p 80:8080 --restart always --name my-server-container 你的镜像名:标签

给脚本加执行权限:chmod +x start-server.sh,以后直接运行./start-server.sh就能快速启动或者更新你的服务器了。

另外,如果你想更专业的管理容器,可以用ECS的服务来部署,ECS会自动帮你在集群的EC2实例上调度容器、自动重启故障容器,但如果只是快速启动服务器,直接在EC2上手动运行Docker容器就足够了。

内容的提问来源于stack exchange,提问作者grabury

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:39:02