返回列表

阿里云国际版 阿里云服务器部署Docker教程:ECS安装Docker环境、开放端口并运行容器应用

阿里云国际 / 2026-09-22 16:56:06

如果需要更深入咨询了解可以联系全球代理上TG: @cloudcup  他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,微软云开户充值。oss防风控上传加密系统。客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。

很多用户搜索“阿里云服务器部署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实例详情页,点击“安全组” -> “配置规则” -> “入方向” -> “手动添加”。

端口用途授权对象建议
22SSH远程连接固定办公IP优先,不建议长期全网开放
80HTTP网站访问0.0.0.0/0
443HTTPS访问0.0.0.0/0
8080测试应用端口仅测试时开放
3306MySQL仅内网或固定IP开放
6379Redis不建议公网开放

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测试容器,再部署正式业务容器,通常可以避免大部分上线前后的常见故障。

如果需要更深入咨询了解可以联系全球代理上TG: @cloudcup  他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,微软云开户充值。oss防风控上传加密系统。客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系