Docker入门到容器化建站实战:一条命令跑起网站与数据库


温馨提示:本文为读者投稿的实用技术内容,操作前请先做好数据备份。

很多拿 VPS 的人,都是被"装环境"这件事劝退的:先装 Nginx,再配 PHP,再装 MySQL,还要改各种配置文件,折腾半天网站还没跑起来。更头疼的是,换台机器要从头再来一遍。今天这篇文章,带你用 Docker 彻底告别这种痛苦。

如果你完全没接触过 Docker,别担心。我会从"它到底解决什么问题"讲起,用最直观的例子把概念讲透,然后手把手带你用 Docker 把整套建站环境(Nginx + PHP + MySQL)一次性跑起来。读完你就能轻松复制、备份、迁移你的网站。

Docker 到底解决什么问题?先想明白再动手

传统装环境的痛点,本质是三个:

1. "环境地狱":同一个软件在不同系统上安装方式五花八门,改了 A 影响 B,升级 C 弄挂 D。

2. "搬家困难":程序能跑,靠的是机器上一堆隐藏的依赖和环境变量,换个机器经常各种报错。

3. "资源浪费":为跑一个小网站装一大套软件,互相侵占配置,还不好隔离。

Docker 的思路很朴素:把"程序 + 它需要的运行环境"打包成一个独立、标准的"容器"。这个容器在任意机器上运行结果完全一致。你平时见到的镜像(Image)就是打包好的模板,运行起来的实例就是容器(Container)。

一句话:镜像像"安装包",容器像"装好、开着的程序",而 Dockerfile 是"如何制作这个安装包的说明书"。

在你的 VPS 上安装 Docker(Ubuntu/Debian)

以 Ubuntu/Debian 系统为例,安装 Docker 最省心的方式是官方安装脚本:

curl -fsSL https://get.docker.com | sh

装完把当前用户加入 docker 组,这样不用每次敲 sudo:

sudo usermod -aG docker $USER

重新登录终端后,验证是否安装成功:

docker --version

docker run hello-world

能打印出 hello-world 的信息,说明 Docker 已经正常工作了。

小提示:CentOS 7/8 老版本用户也可以对应使用官方脚本,或按发行版文档手动安装。

核心概念速记:镜像、容器、仓库

动手之前,把这几个词理解透,后面一切都顺:

• 镜像(Image):一个只读的模板,比如"带 Nginx 的 Ubuntu"。用命令 docker images 可以查看本机已有的镜像。

• 容器(Container):镜像运行起来的实例,有独立的文件系统和网络,可以被启动、停止、删除。

• 仓库(Registry):存放镜像的"应用商店",最常用的是 Docker Hub。我们用 docker pull 就能下载别人做好的官方镜像。

• Dockerfile:我自己写一个文件,声明"基于什么镜像、装什么、复制什么文件",docker build 就能生成自定义镜像。

最重要的心智模型:容器是"一次性的"。杀掉重新跑一个,立即回到干净状态,这正是它好用又安全的原因。数据要保存,就得用"数据卷(Volume)"存到宿主机的磁盘上。

第一个实战:docker run 跑一个 Nginx

我们先用一个 Nginx 容器体验一下。直接运行:

docker run -d --name web-test -p 8080:80 nginx

命令拆开看:

• docker run:创建并启动容器。

• -d:后台运行。

• --name web-test:给容器起个名字。

• -p 8080:80:把宿主机的 8080 端口映射到容器里的 80 端口。

• nginx:要用的镜像(本地没有会自动从 Docker Hub 拉取)。

启动后,在浏览器访问 http://你的服务器IP:8080,能看到 Nginx 的默认欢迎页,就说明容器跑通了。

常用管理命令:

docker ps # 查看正在运行的容器

docker exec -it web-test bash # 进入容器终端

docker logs web-test # 查看容器日志

docker stop web-test # 停止容器

docker rm web-test # 删除容器

让容器永续:数据卷(Volume)才是关键

容器删除后数据就没了,这对网站是不可接受的。解决办法是把宿主机的目录"挂载"进容器,容器里的写入会直接落到宿主机磁盘。

以挂载网站目录和 Nginx 配置为例:

docker run -d --name web \

-p 8080:80 \

-v /data/www:/usr/share/nginx/html:ro \

-v /data/nginx/conf:/etc/nginx/conf.d \

nginx

-v 就是把宿主机目录接到容器路径:/data/www 映射到容器内的网站根目录,/data/nginx/conf 放配置。这样你改宿主机上的文件,容器立刻生效,数据也不会随容器删除而丢失——这才是"可持久化"的正确姿势。

connect the dots:用 docker-compose 一键编排整套环境

只用一个容器时 docker run 够用,但建站往往要 Nginx + PHP + MySQL 三个服务一起配合。docker-compose 就是用来"一次声明、一键启动"多个容器的工具。

先安装 docker-compose(新版 Docker 通常自带 docker compose 子命令,若没有可用 pip install docker-compose 或下载二进制)。然后在项目目录创建 docker-compose.yml:

version: '3'

services:

db:

image: mysql:8.0

restart: always

environment:

MYSQL_ROOT_PASSWORD: your_db_password

MYSQL_DATABASE: wordpress

volumes:

• db_data:/var/lib/mysql

web:

image: nginx:1.24

restart: always

ports:

• "80:80"

• "443:443"

volumes:

• ./www:/var/www/html

• ./nginx.conf:/etc/nginx/conf.d/site.conf

depends_on:

• php

php:

image: php:8.1-fpm

restart: always

volumes:

• ./www:/var/www/html

volumes:

db_data:

在这个文件里,我们声明了三个服务:db(数据库)、web(Nginx)、php(PHP-FPM),并挂载了网站目录和数据库数据卷。启动它:

docker-compose up -d

就这三条命令,数据库 + PHP + Nginx 组成的建站环境就全部就绪了。这套配置还能复制到任何机器上,用镜像保证环境一致,从而彻底解决"换机重装"的烦恼。

把网站装进容器:以 WordPress 为例

如果你要把现成的 WordPress 跑进容器,思路一样:把程序源码放进制网站目录(上面 docker-compose 里的 ./www),然后访问 http://你的IP 按安装向导走即可。数据库连接信息在 wp-config.php 里填 docker-compose 中 mysql 容器的服务名 db 和密码即可。

这里的关键是理解"容器内互相通信用服务名而不是 IP"。所以 mysql 容器的 host 在 PHP 里填 db 而不是 127.0.0.1,这是因为每个容器有自己独立的网络栈。

备份与迁移:用 Docker 让"搬家"变成复制粘贴

Docker 最大的红利在迁移。传统换机要重装环境、重新配一堆东西,用 Docker 只需三步:

1. 拷贝项目目录(含 docker-compose.yml、网站文件和 nginx.conf)。

2. 备份数据库数据卷。

3. 在新机器上 docker-compose up -d,恢复数据库数据。

由于环境已经全部"装进镜像",新机器只要装了 Docker,就能一键复现同样的运行环境。想迁移到香港、美国等节点,或在不同商家之间切换,成本都大幅降低。

数据库数据卷备份示例:

docker run --rm --volumes-from 容器名 -v /backup:/backup alpine \

tar czf /backup/db_backup.tar.gz /var/lib/mysql

给新手的几条实用建议

1. 镜像选官方版本,别乱用来路不明的镜像,安全风险高。

2. 敏感配置(数据库密码等)尽量用环境变量或 .env 文件管理,别硬编码进容器。

3. 端口映射别撞车,一个宿主机端口只能映射给一个容器。

4. 定期更新镜像和容器,及时修复安全漏洞。

5. 容器内就当"临时工",重要数据一律走数据卷持久化。

结语

Docker 不是一个必须会上手的高级技巧,而是把"建站、试错、迁移"这三件事从工程问题变成复制粘贴的神兵利器。学会了它,你手里那台 VPS 的玩法会彻底打开:多网站隔离、一键恢复、随意折腾都不怕搞坏环境。

从今天起,别再一个个装环境了,用 Docker 把网站"装进盒子",随用随取、随换随跑。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

网站HTTPS/SSL免费证书完整教程:从申请、部署到强制跳转一次讲清

2026年服务器与云计算市场怎么看?AI浪潮下的VPS行业新机会

评 论