背景与目标#
在完成了服务器基础的安全加固与虚拟内存分配后,环境搭建正式进入容器化阶段。本次实践的核心目标是全面拥抱 Docker。摒弃传统的“直接在宿主机装一切”的做法,转而通过编写 docker-compose.yml 文件来统一管理和启动服务 。
这样做最大的收获在于掌握了现代化的容器化技术:无论未来如何更换服务器,只需要几行命令就能瞬间恢复所有服务,并且能保持宿主机环境极其干净 。这不仅是云服务器管理的最佳实践,也是计算机专业学生向 DevOps 迈进的关键一步。
核心原理解析:为什么选择 Docker?#
在本次 RackNerd VPS 的实践中,我深刻理解了**“基础设施即代码”(Infrastructure as Code)**的概念。
传统的服务器部署,应用与宿主机的操作系统、环境变量深度绑定,迁移成本极高。而 Docker 通过将应用程序及其依赖打包成标准的“镜像(Image)”,彻底改变了这一现状。
- 隔离与干净: 所有的服务都在各自的容器内运行,互不干扰,宿主机仅仅提供 Docker 运行的引擎 。
- 迁移逻辑重塑: 服务器搬家不再需要重新配置复杂的运行环境。只需要备份“架构图纸”(
docker-compose.yml文件)以及“核心数据”(映射到宿主机的目录)。在新服务器上,只需拉取镜像并根据图纸重新启动,即可实现分钟级的服务无损复原。
实践操作记录 (Ubuntu 24.04 环境)#
1. 规范化安装 Docker 引擎#
为了获取最新且稳定的功能,通过添加官方 HTTPS 软件源的方式进行安装 :
# 1. 安装必要的依赖
sudo apt-get update
sudo apt-get install ca-certificates curl
# 2. 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL [https://download.docker.com/linux/ubuntu/gpg](https://download.docker.com/linux/ubuntu/gpg) -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 3. 将 Docker 仓库添加到软件源列表 (自动感知 CPU 架构与系统版本)
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] [https://download.docker.com/linux/ubuntu](https://download.docker.com/linux/ubuntu) \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 4. 安装 Docker 及其 Compose 插件
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin2. 编写并启动第一个容器 (Nginx)#
创建一个独立的测试目录,编写 docker-compose.yml 来映射端口并启动 Nginx 服务 :
services:
my-web-server:
image: nginx:latest
ports:
- "8080:80"启动命令:sudo docker compose up -d(-d 参数表示在后台运行,断开 SSH 后服务依然在线)。
避坑指南(Troubleshooting)#
在首次启动容器时,遇到了典型的 YAML 解析报错:
yaml: line 1, column 24: mapping values are not allowed in this context
错误原因与解决方案: YAML 是一种对缩进和格式要求极为严苛的配置语言。该报错通常是因为:
- 复制粘贴时带入了多余的不可见字符或说明文字。
- 错误地使用了
Tab键进行缩进(YAML 规范要求必须使用空格对齐层级)。
清空文件内容,确保只有纯净的代码和正确的空格缩进后,服务成功启动。可以通过 curl http://localhost:8080 在终端验证 Nginx 的欢迎页面。




