这个问题其实没有一个统一的标准答案,因为“应用镜像”本身就是一个高度自定义的概念。在云计算领域,我们通常把镜像分为公共镜像(系统盘)、自定义镜像和市场镜像(应用镜像)。
你问的“预装了哪些软件”,取决于你具体使用的是哪一类镜像,以及你在创建或选择镜像时做了哪些配置。下面我按国内主流云厂商(如阿里云、腾讯云、华为云等)的通用逻辑,分场景给你拆解一下:
1. 如果你用的是“公共镜像”(纯净版系统)
这是大多数开发者刚买服务器时的默认状态。
- 预装内容:只有操作系统内核 + 基础驱动 + 必要的系统工具包。
- Linux(CentOS/Ubuntu/Debian):
bash,ssh,iptables,cron,systemd等基础命令。 - Windows Server:基本的桌面环境、IIS(可选)、远程桌面服务。
- Linux(CentOS/Ubuntu/Debian):
- 特点:几乎没装任何业务软件。你需要自己安装 Nginx、MySQL、Java、Python 等。这是最干净、最安全的起步方式,适合喜欢从零搭建环境的极客或运维人员。
2. 如果你用的是“自定义镜像”(你自己打包的)
很多团队会先在一台服务器上部署好环境,然后制作成镜像,用于快速扩容。
- 预装内容:完全取决于你打包前这台机器上装了啥。
- 常见的组合包括:JDK + Tomcat/Nginx + MySQL/Redis + 项目代码包 + 启动脚本。
- 有些还会预装监控 Agent(如 Prometheus Node Exporter)、日志收集 Agent(如 Filebeat)。
- 关键点:这种镜像的优势是一致性。所有新实例启动后,环境一模一样,无需重复配置。但缺点是如果基础组件有安全漏洞,整个镜像都需要重新制作。
3. 如果你用的是“市场镜像”或“一键安装包”(应用镜像)
这是云厂商或第三方服务商提供的“开箱即用”方案,比如“WordPress 镜像”、“LAMP 环境镜像”、“Java SpringBoot 镜像”。
- 预装内容:通常是Web 服务器 + 数据库 + 运行时环境 + 特定应用。
- LAMP/LNMP 镜像:Apache/Nginx + MySQL/MariaDB + PHP/Python/Perl。
- 容器化镜像:Docker Engine + Docker Compose + 预拉好的镜像(如 Nginx, Redis, MySQL)。
- 特定应用镜像:直接跑好了 WordPress、GitLab、Jenkins 等,甚至可能绑定了域名解析脚本。
- 注意:这类镜像为了追求“快”,往往会在首次启动时自动执行一些初始化脚本(如设置 root 密码、创建数据库用户、修改配置文件)。务必在首次登录时检查这些脚本的执行结果。
4. 关于“预装软件”的几个关键细节(避坑指南)
✅ 安全相关
- 云助手/Agent:几乎所有云厂商的 Linux 镜像都会预装一个轻量级的 Agent(如阿里云的
cloud-init/alibaba-cloud-agent,腾讯云的QCloudAgent)。它的作用是支持控制台操作(如重置密码、查看日志、重启实例),不是病毒,但属于厂商管理工具。 - 防火墙:通常只开放了 SSH (22) 和 RDP (3389) 端口,其他端口默认关闭。你需要通过云控制台的安全组来放行业务端口。
❌ 不会预装的(常见误区)
- 不会预装你的业务代码:除非你用的是定制化的“应用交付镜像”,否则镜像里不会有你的
.jar、.war或前端静态文件。 - 不会预装复杂的中间件集群:比如 K8s Master/Node、Zookeeper 集群等,这些通常需要额外部署。
- 不会预装图形界面(GUI):除非你特意选择了带 GUI 的 Windows 或 Ubuntu Desktop 镜像,否则 Linux 服务器默认都是命令行界面。
🛠️ 如何查看当前镜像预装了哪些软件?
登录到你的云服务器后,可以用以下命令快速了解环境:
# 查看所有已安装的 RPM 包(CentOS/RHEL 系)
rpm -qa | sort
# 查看所有已安装的 DEB 包(Ubuntu/Debian 系)
dpkg -l | grep ^ii
# 查看正在运行的服务
systemctl list-units --type=service --state=running
# 查看已安装的编程语言环境
java -version
python --version
node -v
nginx -v
mysql --version
💡 建议
- 新手/求稳:直接用云厂商的公共镜像(如 Ubuntu 22.04 LTS 或 CentOS Stream 9),然后通过脚本(Shell/Ansible/Terraform)自动化部署环境。这样可控性最强,安全性最高。
- 快速验证/原型开发:使用市场镜像(如 LNMP、Docker 环境),节省时间。
- 生产环境大规模部署:基于自定义镜像,并配合 CI/CD 流水线。每次更新代码或依赖库,都重新构建镜像并打标签,确保版本可追溯。
总结:没有固定的“预装列表”。你看到的软件,要么是你选的镜像自带的,要么是你自己在初始配置中安装的。建议养成记录“基础设施即代码”(IaC)的习惯,而不是依赖镜像里的隐式配置。
云技术博客