Docker 到底解决了什么?一位工程师的实践反思
传统部署的三大痛点
1. 环境不一致
开发机是 PHP 7.4,测试机是 8.0,生产机是 7.2。同一套代码,三种表现。
2. 部署靠手艺
手动装 Nginx、编译 PHP、配 MySQL、改配置文件……每一步都依赖人的记忆,换个人来结果完全不同。
3. 迁移如渡劫
换服务器 = 重做上面所有步骤 + 导入数据库,折腾半天是常有的事。
Docker 怎么解决这些问题
Docker 的核心很简单:把应用和它的运行环境打包在一起带走。
| 痛点 | 传统方案 | Docker 方案 |
|---|---|---|
| 环境不一致 | 每台机器手动配置 | 所有人用同一个镜像,完全一致 |
| 部署靠手艺 | 8 步手动操作 | 一个 docker-compose.yml 搞定 |
| 迁移如渡劫 | 重装环境数小时 | 打包文件几分钟恢复 |
这就是 Docker 的价值:把"部署"从手艺变成了工程。
在 Ubuntu 22.04 上安装 Docker
# 1. 更新并安装依赖 sudo apt update sudo apt install -y ca-certificates curl gnupg # 2. 添加 Docker 官方源 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 3. 安装 Docker sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # 4. 启动并验证 sudo systemctl start docker sudo systemctl enable docker docker --version
一分钟部署博客
创建 docker-compose.yml:
version: '3.8' services: db: image: mysql:5.7 restart: always environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: wordpress MYSQL_USER: wpuser MYSQL_PASSWORD: wppass123 volumes: - db_data:/var/lib/mysql wordpress: depends_on: - db image: wordpress:latest restart: always ports: - "80:80" environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wpuser WORDPRESS_DB_PASSWORD: wppass123 volumes: - wp_data:/var/www/html volumes: db_data: wp_data:
启动:
docker compose up -d
浏览器访问 http://你的服务器IP,跟着安装向导走完即可。
迁移服务器有多简单
# 老服务器:打包 tar -czvf blog.tar.gz ~/myblog/ scp blog.tar.gz 新服务器IP:/root/ # 新服务器:解压并启动 tar -xzvf blog.tar.gz cd ~/myblog docker compose up -d
前后 几分钟,换作传统方案需要 半天。
一点客观评价
Docker 也有代价:
镜像大(WordPress 约 500MB)
有学习成本(镜像、容器、卷这些概念要花时间理解)
但这些成本是一次性的。一旦掌握,每次部署、每次迁移都省下数倍时间。
技术选型,选的是长期收益更高的那条路。
对我来说,Docker 让我终于不用再为"环境问题"这四个字熬夜了。

请先 登录后发表评论 ~