阿里云国际版ECS部署Docker教程:安装Docker、开放端口并运行容器应用完整操作指南
用户搜索“阿里云国际版 阿里云服务器部署Docker教程”时,通常不是想了解Docker是什么,而是已经进入实际部署阶段,正在处理几个具体问题:ECS买多大合适、选哪个地域延迟更低、Linux系统装哪个版本更稳、Docker怎么快速安装、为什么容器跑起来了公网却访问不到、端口到底要开安全组还是开防火墙,或者两边都要开。本文直接按真实部署顺序写,适合第一次在阿里云国际版ECS上部署Docker应用的用户,也适合需要快速排错的运维人员。
部署时最容易卡住的几个节点
从实际操作看,用户最关心的不是“能不能安装Docker”,而是“安装后能不能马上访问应用”。真正高频的问题通常集中在以下几步。
| 操作阶段 | 常见问题 | 直接影响 |
| 购买ECS | 地域选错、带宽太小、镜像版本不兼容 | 延迟高、后续安装麻烦 |
| 远程连接 | SSH连不上、公网IP未分配、22端口未放行 | 无法进入服务器 |
| Docker安装 | 仓库源失效、系统版本不匹配、依赖缺失 | 安装失败或服务无法启动 |
| 容器运行 | 端口映射错误、容器异常退出、镜像拉取慢 | 应用不可用 |
| 公网访问 | 安全组未放行、系统防火墙未开放、应用监听127.0.0.1 | 浏览器打不开 |
如果你的目标是尽快上线一个测试站点、API服务或管理后台,建议优先按本文的流程完成一个最小可用部署,再做镜像加速、HTTPS、反向代理、自动重启等优化。
开始前要准备什么
账号和权限
你需要一个阿里云国际版账号,并具备创建ECS、安全组、弹性公网IP或公网带宽的权限。如果账号由公司统一管理,先确认是否有VPC、实例、快照和安全组的操作权限,否则很容易在创建实例或修改网络规则时卡住。
建议准备的资源
| 项目 | 建议配置 | 说明 |
| 实例规格 | 2 vCPU / 2GB内存起步 | 适合单容器测试、Nginx、轻量API |
| 系统盘 | 40GB ESSD或高效云盘 | 镜像、日志、容器层都要占空间 |
| 公网带宽 | 3Mbps起步 | 仅测试可更低,正式业务建议5Mbps以上 |
| 系统镜像 | Ubuntu 22.04 / Debian 12 / CentOS Stream谨慎选 | 优先选择社区支持活跃版本 |
| 登录方式 | SSH密钥优先,其次密码 | 密钥更安全,避免弱密码 |
前置条件检查
- 确认实例已分配公网IP,或者绑定了弹性公网IP。
- 本地电脑有SSH工具,例如Terminal、iTerm、Xshell、MobaXterm。
- 如果部署Web服务,提前确认要使用的端口,如80、443、8080、3000、5000。
- 如果后续需要域名访问,提前准备DNS解析和备案策略,但本文先解决“公网IP直连可用”。
阿里云国际版ECS购买与创建步骤
步骤1:创建ECS实例时参数怎么选
登录阿里云国际版控制台后,进入ECS实例创建页面。这里最关键的是地域、可用区、实例规格、镜像、系统盘和网络配置。
地域选择不要只看价格,要先看你的用户在哪。如果用户主要在中国香港、新加坡、日本、美国西海岸,建议优先选离用户近的地域。跨境业务如果目标客户在东南亚,香港和新加坡一般是更常见的选择。管理后台类应用对延迟敏感度低,但API、站点和下载服务对地域更敏感。
| 业务类型 | 推荐地域思路 | 注意事项 |
| 中国香港访客 | 香港地域优先 | 延迟低,但价格通常高于部分海外地域 |
| 东南亚用户 | 新加坡优先 | 适合跨境电商、SaaS后台 |
| 日本用户 | 东京优先 | 本地访问体验更稳定 |
| 欧美用户 | 美国西部或欧洲就近选择 | 避免亚洲地域跨洋访问 |
实例规格方面,如果只是跑一个Nginx、Node.js、Java轻量服务或小型管理系统,2核2G通常可以启动并测试;如果同时跑Nginx + 应用容器 + Redis,建议直接选2核4G,后续更省排障时间。系统盘不建议低于40GB,因为Docker镜像、构建缓存和日志容易把小盘打满。
步骤2:网络和登录参数设置
在网络部分,确保实例加入正确的VPC和交换机。如果只是单机部署,一个默认VPC即可。需要公网访问时,务必勾选分配公网IP或购买公网带宽。很多用户实例创建完成后才发现无法公网访问,原因不是Docker问题,而是压根没公网出口。
登录凭证建议选择SSH Key Pair。如果你使用密码登录,请设置高强度密码,至少包含大小写、数字和特殊字符。创建后记录公网IP、私网IP、实例ID和地域信息,后续排障时会频繁用到。
步骤3:安全组初始规则一次配好
在创建实例阶段就配置安全组,能减少后续重复修改。至少放通以下端口:
| 端口 | 用途 | 是否建议立即放行 |
| 22 | SSH远程连接 | 是,建议限制来源IP |
| 80 | HTTP访问 | 部署Web应用时放行 |
| 443 | HTTPS访问 | 后续上SSL时需要 |
| 8080 | 测试应用常用端口 | 按需放行 |
| 3000/5000 | 开发框架默认端口 | 仅测试时临时放行 |
注意:安全组放行不等于系统防火墙也放行,两边都要检查。
连接ECS并安装Docker
步骤1:SSH连接Linux实例
在本地终端执行以下命令:
ssh root@你的公网IP
阿里云国际版 如果是Ubuntu默认用户,也可能是:
ssh ubuntu@你的公网IP
首次连接会提示确认指纹,输入yes即可。如果超时,先检查三件事:22端口是否在安全组放行、实例是否有公网IP、本地网络是否限制SSH。
步骤2:更新系统并安装Docker
以下以Ubuntu / Debian系为例,兼容性更好,部署速度也更快。
apt update && apt -y upgrade
apt -y install ca-certificates curl gnupg lsb-release
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装完成后检查服务状态:
systemctl enable docker
systemctl start docker
systemctl status docker
如果看到active (running),说明服务正常。
步骤3:验证Docker是否可用
执行:
docker version
docker run hello-world
如果hello-world容器输出成功信息,说明Docker运行环境已完成。如果拉取镜像很慢,可以后续补充镜像加速配置,但在阿里云国际版环境下,加速源可用性会因地域而不同,建议先验证基础功能,再决定是否配置自建镜像代理。
开放端口并运行容器应用
步骤1:在阿里云控制台开放安全组端口
进入ECS实例详情页,找到绑定的安全组,添加入方向规则。例如你要运行Nginx容器并通过80端口访问,规则填写如下:
| 配置项 | 示例值 |
| 方向 | 入方向 |
| 协议类型 | TCP |
| 目的端口范围 | 80/80 |
| 授权对象 | 0.0.0.0/0(测试) |
| 描述 | Allow HTTP |
如果你部署的是后台管理系统,不建议长期对全网开放管理端口,最好限制来源IP段。
阿里云国际版 步骤2:在系统内开放防火墙
如果服务器启用了UFW,执行:
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
阿里云国际版 ufw status
如果系统使用firewalld,则执行:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload
不少“明明安全组开了但还是访问不到”的问题,最终都出在系统防火墙没同步开放。
步骤3:启动容器并映射端口
先用Nginx做最简单验证:
docker pull nginx:latest
docker run -d --name web01 --restart always -p 80:80 nginx:latest
参数说明要注意两点:-d表示后台运行;-p 80:80表示服务器80端口映射到容器80端口。如果你的应用在容器内监听的是3000端口,命令应该类似:
docker run -d --name app01 --restart always -p 80:3000 your-image-name
这里常见错误是把端口写反,导致访问服务器80端口时根本进不到正确进程。
步骤4:检查应用是否真的对外监听
容器启动后,不要立刻认为部署完成,继续检查:
docker ps
ss -lntp | grep :80
curl http://127.0.0.1
curl http://你的公网IP
如果本机127.0.0.1能访问、公网IP不能访问,优先排查安全组和防火墙;如果本机都不能访问,说明容器本身没有正常启动,或者应用进程没有监听0.0.0.0。
部署完成后如何判断是哪一层出了问题
实际排障时,建议按照“实例网络 → 安全组 → 系统防火墙 → Docker端口映射 → 容器进程”这个顺序查,不要一上来就重装。
| 现象 | 优先排查 | 处理方法 |
| SSH无法连接 | 22端口、公网IP、实例状态 | 检查安全组和实例是否Running |
| Docker安装失败 | 系统版本、仓库源、DNS | 更换软件源或检查解析 |
| 容器启动马上退出 | 应用启动命令错误 | 查看docker logs 容器名 |
| 浏览器超时 | 安全组、防火墙、端口映射 | 逐层验证80或业务端口 |
| 返回502或空白页 | 容器内应用未启动 | 进入容器检查进程和配置 |
查看日志命令:
docker logs web01 --tail 100
进入容器排查:
docker exec -it web01 /bin/bash
如果镜像没有bash,可以用:
docker exec -it web01 sh
阿里云国际版 不同用户场景的配置建议
个人开发者
建议2核2G、40GB系统盘、3Mbps公网带宽。系统优先Ubuntu 22.04。适合部署个人博客、测试接口、轻量管理后台。不要一开始就同时部署数据库、缓存、反向代理和监控,先跑通一个容器应用。
企业用户
建议2核4G或4核8G起步,业务容器与数据库分离。安全组不要全网开放SSH和数据库端口,管理端口限制办公IP。结合快照做变更前备份,容器务必使用--restart always策略。
跨境业务
重点看地域延迟和公网质量。面向东南亚用户优先新加坡,面向香港用户优先香港。上线前用本地和目标地区分别做Ping、TCPing和应用层响应测试,不能只看控制台显示的带宽。
网站应用
建议容器前增加Nginx反向代理,后续统一处理80/443、证书和压缩配置。如果是WordPress、Laravel、Node.js站点,建议应用容器与数据库分实例部署,避免小内存机器频繁OOM。
数据库业务
不建议把MySQL、Redis直接裸露在公网。应优先使用私网连接,或者只对白名单IP开放。如果只是测试环境,也要避免0.0.0.0/0永久开放3306和6379。
常见问题FAQ
1. 为什么ECS已经安装Docker,但执行docker命令报权限不足?
如果你不是root用户,需要把当前用户加入docker组:
usermod -aG docker 用户名
执行后重新登录会话生效。临时处理也可以直接使用sudo执行docker命令。
2. 为什么容器显示Up,但公网IP打不开页面?
通常是四类原因:安全组端口未放行、系统防火墙未开放、Docker端口映射错误、应用仅监听127.0.0.1。按顺序检查控制台安全组、ufw status或firewall-cmd --list-ports、docker ps端口映射、以及应用配置里的监听地址。
3. 阿里云国际版ECS选CentOS还是Ubuntu更省事?
如果你的目标是尽快把Docker跑起来,Ubuntu 22.04通常更直接,社区教程、依赖兼容性和软件仓库都更省时间。CentOS旧版本已不适合作为新部署首选,尤其在新组件和镜像兼容方面更容易遇到问题。
4. Docker镜像拉取很慢怎么办?
先确认是不是网络DNS问题,再确认目标镜像仓库是否可达。国际版ECS一般访问Docker Hub条件相对国内环境更直接,但不同地域速度仍会波动。可通过更换时间段、配置镜像代理或在CI阶段预构建镜像后上传私有仓库来优化。
5. 端口开放后仍然连接超时,怎么快速定位?
阿里云国际版 可以按这个顺序:docker ps看容器是否运行;ss -lntp看宿主机是否监听端口;curl 127.0.0.1:端口看本机是否可访问;控制台检查安全组;系统检查防火墙。只要按层定位,一般几分钟就能找到具体阻塞点。
6. 如何在修改配置前避免操作失误导致服务中断?
先创建ECS快照,再导出当前容器启动参数与镜像版本。对生产容器不要直接覆盖运行,建议新容器用新端口启动验证后,再切换反向代理。
阿里云国际版 进一步优化:不是必须,但很实用
安全优化
- SSH禁止全网开放,改为固定办公IP白名单。
- 阿里云国际版 尽量使用SSH密钥,不要长期保留弱密码。
- 不要把3306、6379、2375等端口直接暴露公网。
- 容器镜像固定版本号,不要生产环境长期使用latest。
性能优化
- 日志目录单独挂载,避免系统盘被容器日志写满。
- 高并发场景将应用和数据库拆分部署。
- 静态资源建议交给Nginx或CDN,不要都让应用容器处理。
- 上线后用
top、htop、docker stats观察CPU和内存占用。
成本优化
- 测试环境从2核2G开始,不必一开始买过高配置。
- 阿里云国际版 镜像和无用容器定期清理,减少磁盘浪费。
- 带宽按真实访问量逐步提升,不要预留过大。
稳定性优化
- 关键应用容器使用
--restart always。 - 变更前做快照,更新镜像前保留旧版本。
- 正式站点尽快补上HTTPS和域名解析,避免长期裸IP服务。
- 定期检查磁盘使用率,特别是/var/lib/docker目录。
如果你当前的目标只是“在阿里云国际版ECS上把Docker应用跑起来并让公网能访问”,最短路径就是:创建带公网IP的Linux ECS → 放通22和业务端口 → SSH登录安装Docker → 用docker run -p映射端口启动容器 → 同时检查安全组和系统防火墙。大多数部署失败,都不是Docker本身安装错误,而是网络入口、端口映射或监听地址没有打通。
如果需要更深入咨询了解可以联系全球代理上TG: @cloudcup 他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,微软云开户充值。oss防风控上传加密系统。客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。