阿里云国际版 阿里云服务器部署Docker教程:ECS安装Docker环境、开放端口并运行容器应用
很多用户搜索“阿里云服务器部署Docker教程”,并不是想了解Docker原理,而是想尽快把容器跑起来,并解决几个实际问题:ECS怎么买才够用、用哪个Linux镜像更省事、为什么Docker装完拉不到镜像、为什么容器启动了外网还是访问不了、以及后续如何重装、备份和迁移。下面这篇文章按真实操作流程展开,优先解决部署过程中最容易卡住的环节。
一、用户搜索这篇教程时最关心的问题
在实际部署中,用户通常关心的不是“能不能装Docker”,而是“怎么少走弯路”。常见场景包括:在阿里云ECS上部署Nginx、WordPress、Java应用、Node.js服务、MySQL、Redis,或者用于测试环境和小型业务上线。
1. 最常见的决策问题
- 阿里云服务器应该选哪个地域,公网延迟更低?
- 实例规格怎么选,2核2G是否够跑Docker?
- Alibaba Cloud Linux、CentOS、Ubuntu 选哪个更省事?
- 为什么安装Docker后容器能启动,但浏览器打不开?
- 为什么SSH能连,应用端口却不通?
- 镜像拉取慢或失败,怎么处理?
2. 最容易出问题的步骤
| 步骤 | 常见问题 | 直接影响 |
| 购买ECS | 规格选小、地域选错、带宽不足 | 容器卡顿、访问慢、后期迁移麻烦 |
| 系统初始化 | 密码/密钥未配置好 | SSH无法连接 |
| 安装Docker | 源不可用、依赖冲突、服务未启动 | Docker命令无法使用 |
| 运行容器 | 端口映射错误、卷挂载路径错 | 容器启动失败或数据丢失 |
| 网络配置 | 安全组未放行、系统防火墙拦截 | 外网无法访问服务 |
二、准备工作
1. 账号与权限要求
- 一个已实名认证的阿里云账号。
- 具备创建ECS、安全组、快照的权限。
- 如果是RAM子账号,至少授予ECS实例管理、网络与安全组配置权限。
2. 所需资源
| 资源项 | 建议 | 说明 |
| ECS实例 | 2核2G起步 | 适合测试、小型站点、单容器服务 |
| 系统盘 | 40GB以上ESSD Entry | 镜像、容器日志、数据卷都占空间 |
| 公网带宽 | 3Mbps起步 | 拉镜像、远程管理、外网访问会用到 |
| 操作系统 | Alibaba Cloud Linux 3 / Ubuntu 22.04 | 软件源较稳定,维护方便 |
| 开放端口 | 22、80、443、业务端口 | 按实际应用放行 |
3. 前置条件
- 本地电脑已安装SSH客户端。Windows可用PowerShell、Xshell、MobaXterm;macOS/Linux可直接用终端。
- 明确要运行的容器应用,例如Nginx、MySQL、Redis或业务镜像。
- 如果部署网站,建议提前准备域名和备案信息;若仅测试容器,可先用公网IP访问。
三、详细操作教程
步骤1:购买并创建阿里云ECS实例
登录阿里云控制台,进入“云服务器ECS”页面,点击“创建实例”。这里不要盲目选择最低配置,Docker部署很容易因为内存不足或磁盘偏小影响后续使用。
阿里云国际版 1. 地域和可用区怎么选
- 用户主要在中国大陆:优先选择靠近用户的地域,如华东、华北、华南。
- 仅用于个人测试:选择活动价格合适、库存稳定的地域即可。
- 跨境业务:面向东南亚可优先考虑中国香港或新加坡,先做网络延迟测试再决定。
注意:公网IP、云盘、快照、镜像迁移都和地域绑定,选错地域后迁移成本较高。
2. 实例规格与系统选择
| 使用场景 | 推荐配置 | 说明 |
| 学习测试 | 2核2G / 40GB | 可运行1-3个轻量容器 |
| 网站应用 | 2核4G / 40-80GB | 适合Nginx+应用容器 |
| 数据库或多容器 | 4核8G以上 | 避免MySQL、Redis争抢内存 |
| 高并发业务 | 8核16G以上 | 建议拆分应用与数据库 |
镜像选择建议:如果你追求兼容性和文档丰富,选Ubuntu 22.04;如果希望和阿里云环境适配顺手,选Alibaba Cloud Linux 3。新环境不建议继续使用过旧CentOS版本。
3. 网络与登录设置
- 勾选分配公网IPv4地址。
- 安全组可新建一个,后续单独管理22、80、443及业务端口。
- 登录方式建议优先使用密钥对,其次是密码。
- 实例名称建议带上用途,例如 ecs-docker-prod-01。
创建完成后,记录公网IP。若实例初始化中,请等待状态变为“运行中”再连接。
步骤2:远程连接服务器并安装Docker环境
1. SSH远程连接
在本地终端执行:
ssh root@你的公网IP
首次连接会提示确认指纹,输入 yes。若使用密钥登录,需要指定私钥路径。
如果SSH连接失败,先检查以下几项:
- 安全组是否放行22端口。
- 实例是否已绑定公网IP。
- 系统是否已完成启动。
- 密码或密钥是否正确。
2. 更新系统并安装Docker
以Alibaba Cloud Linux 3 / CentOS系为例,连接后执行:
dnf -y update
阿里云国际版 dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动并设置开机自启:
阿里云国际版 systemctl enable docker
阿里云国际版 systemctl start docker
验证安装:
docker --version
systemctl status docker
3. Ubuntu系统安装命令
如果你创建的是Ubuntu实例,可执行:
apt update
apt install -y ca-certificates curl gnupg
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 install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable docker
systemctl start docker
4. 常见安装异常处理
| 问题 | 原因 | 处理方法 |
| docker命令不存在 | 安装包未成功安装 | 重新检查软件源与安装输出 |
| 服务启动失败 | containerd异常或依赖冲突 | 执行systemctl status docker和journalctl -u docker查看日志 |
| 拉镜像超时 | 网络访问Docker Hub慢 | 改用阿里云ACR或可用镜像仓库 |
| 权限不足 | 非root执行Docker | 将用户加入docker组或直接使用root |
步骤3:配置安全组、防火墙并运行容器应用
1. 在阿里云控制台开放端口
进入ECS实例详情页,点击“安全组” -> “配置规则” -> “入方向” -> “手动添加”。
| 端口 | 用途 | 授权对象建议 |
| 22 | SSH远程连接 | 固定办公IP优先,不建议长期全网开放 |
| 80 | HTTP网站访问 | 0.0.0.0/0 |
| 443 | HTTPS访问 | 0.0.0.0/0 |
| 8080 | 测试应用端口 | 仅测试时开放 |
| 3306 | MySQL | 仅内网或固定IP开放 |
| 6379 | Redis | 不建议公网开放 |
2. 检查Linux防火墙
很多用户只放行了安全组,却忽略了系统内部防火墙。
如果系统启用了firewalld,可执行:
systemctl status firewalld
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
阿里云国际版 如果未使用firewalld,也要检查iptables或云市场镜像自带的安全策略。
3. 运行一个测试容器
先用Nginx验证Docker、端口映射和公网访问是否正常:
docker pull nginx:latest
docker run -d --name nginx-test -p 80:80 --restart=always nginx:latest
然后在浏览器访问:
http://你的公网IP
如果能看到Nginx欢迎页,说明以下几项都正常:实例联网、Docker运行正常、容器端口映射正确、安全组和防火墙已放行。
4. 运行业务容器时的关键参数
| 参数 | 示例 | 作用 |
| -d | -d | 后台运行 |
| --name | --name app01 | 指定容器名,便于管理 |
| -p | -p 8080:8080 | 宿主机端口映射到容器端口 |
| -v | -v /data/app:/app | 挂载数据卷,避免重建容器丢数据 |
| --restart | --restart=always | 异常退出后自动拉起 |
| -e | -e TZ=Asia/Shanghai | 注入环境变量 |
示例:部署一个应用容器
docker run -d --name web-app -p 8080:8080 --restart=always -v /data/web/logs:/app/logs your-image:latest
5. 容器日志和状态检查
如果应用起不来,不要第一时间重装系统,先查以下命令:
docker ps -a
docker logs 容器名
docker inspect 容器名
ss -lntp
通过这些命令可以确认容器是否退出、应用是否监听正确端口、宿主机端口是否被占用。
四、配置建议
1. 个人开发者
建议选择2核2G或2核4G ECS,系统盘40GB以上,优先Ubuntu或Alibaba Cloud Linux。容器尽量少而精,使用Docker Compose统一管理,避免在一台小规格服务器同时跑数据库、缓存和多个业务容器。
2. 企业用户
阿里云国际版 建议至少4核8G起步,应用容器和数据库分离部署。生产环境不要直接把MySQL、Redis暴露公网,优先使用私网连接或专用数据库实例。关键配置文件和数据目录务必挂载到独立路径,并定期做快照。
3. 跨境业务
先做地域延迟测试,再决定部署在中国香港还是海外地域。如果镜像拉取慢,优先把业务镜像推送到阿里云容器镜像服务ACR,再在ECS上拉取,稳定性通常高于直接从公共仓库拉取。
阿里云国际版 4. 网站应用
建议开放80和443端口,反向代理统一走Nginx容器,业务容器只监听内网端口。域名解析到公网IP后,再部署SSL证书。HTTPS上线后,记得把站点和反向代理都检查一遍,避免出现证书配置好但后端端口未开放的问题。
5. 数据库业务
阿里云国际版 不建议把数据库作为第一个Docker入门项目直接暴露公网。若必须容器化运行MySQL或Redis,至少要做好数据卷挂载、定时备份、资源限制和访问白名单。数据库连接失败时,优先检查安全组、监听地址、账号授权和容器端口映射。
五、常见问题FAQ
Q1:为什么阿里云服务器SSH无法连接?
A:先检查实例是否有公网IP,安全组22端口是否放行,实例状态是否正常。其次确认密码或密钥是否正确。若更换过系统或重装过实例,旧的密钥配置可能已经失效。
Q2:为什么Docker已经安装成功,但docker pull很慢或失败?
A:多数是访问公共镜像仓库链路慢导致。优先使用阿里云容器镜像服务ACR保存业务镜像,再从同地域ECS拉取。也可以更换可用仓库源,但生产环境更建议固定使用企业可控镜像仓库。
Q3:为什么容器启动了,浏览器还是打不开应用?
A:通常是三类问题:一是docker run没有正确使用-p映射端口;二是阿里云安全组未开放对应端口;三是系统firewalld/iptables拦截。还要检查应用在容器内是否监听0.0.0.0,而不是只监听127.0.0.1。
Q4:2核2G能跑Docker生产环境吗?
A:能跑轻量业务,但不适合多容器叠加,尤其不建议同时承载Java应用、MySQL和Redis。若日志增长快、镜像较多或访问量上升,内存和磁盘都会先成为瓶颈。
阿里云国际版 Q5:容器删除后数据没了,怎么避免?
A:运行数据库、上传目录、日志目录时必须使用-v挂载宿主机目录或数据卷。并且定期做云盘快照。不要把重要数据只保存在容器内部文件系统中。
Q6:如何重装系统而不影响后续恢复?
A:重装前先备份配置文件、导出镜像或保存Docker Compose文件,对数据目录做快照。重装后重新安装Docker,再挂载原数据盘或恢复快照,最后重新启动容器。
Q7:服务器迁移到新实例时,Docker应用怎么迁?
A:最稳妥的方式是:备份数据目录、导出镜像或从仓库重新拉取、复制Compose配置、新实例重新部署、修改DNS解析切换流量。不要直接只复制容器而忽略卷数据和环境变量配置。
六、优化建议
1. 安全优化
- SSH的22端口尽量只对固定IP开放。
- 数据库端口不要直接对公网放开。
- 容器应用优先使用非root用户运行。
- 定期更新系统和Docker版本,修复已知漏洞。
- 敏感配置放环境变量或独立配置文件,不要写死在镜像中。
2. 性能优化
- 系统盘建议使用ESSD,避免镜像和日志写入拖慢IO。
- 业务容器设置合理的CPU、内存限制,避免单容器抢占全部资源。
- 通过docker stats观察资源使用,及时发现内存泄漏或CPU异常。
- 网站应用前面加Nginx反向代理,静态资源可结合CDN。
3. 成本优化
- 测试环境使用较低规格实例,生产和数据库分开部署。
- 不常用的测试实例可停机释放部分成本,但注意公网IP策略和数据保留方式。
- 镜像、日志定期清理,避免无效占用云盘空间。
4. 稳定性优化
- 核心容器加--restart=always。
- 使用Docker Compose管理多容器依赖关系。
- 重要数据目录做定期快照备份。
- 上线前先用curl、telnet、ss、docker logs完整验证端口、进程和日志。
如果你的目标是在阿里云服务器上快速部署Docker并稳定运行容器应用,真正决定成败的不是安装命令本身,而是前面的ECS规格选择、网络放行、数据挂载和后续排错方法。按本文流程操作,先跑通一个Nginx测试容器,再部署正式业务容器,通常可以避免大部分上线前后的常见故障。

