Docker容器化技术已经成为现代服务器部署的标准方式。相比传统的直接安装,Docker提供了环境隔离、快速部署、易于迁移等优势。对于站长来说,掌握Docker可以大大降低运维复杂度,提升服务器资源利用率。本文将从基础概念到实战部署,带你全面掌握Docker在网站运维中的应用。
一、Docker核心概念
理解Docker的三个核心概念是入门的关键:
| 概念 | 说明 | 类比 |
|---|---|---|
| 镜像Image | 只读模板,包含运行环境和代码 | 软件安装包 |
| 容器Container | 镜像的运行实例,可读写 | 运行中的软件 |
| 仓库Registry | 存储和分发镜像的服务 | 应用商店 |
二、Docker安装与基础配置
# CentOS安装Docker
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable docker && systemctl start docker
# 配置镜像加速器(国内必配)
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
],
"log-driver": "json-file",
"log-opts": {"max-size": "100m", "max-file": "3"}
}
EOF
systemctl daemon-reload && systemctl restart docker
# 安装docker-compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
三、Docker Compose部署WordPress
使用docker-compose一键部署WordPress + MySQL + Nginx:
mkdir -p /opt/wordpress && cd /opt/wordpress
cat > docker-compose.yml <<EOF
version: '3.8'
services:
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: strongpassword
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppassword
volumes:
- db_data:/var/lib/mysql
command: --default-authentication-plugin=mysql_native_password
wordpress:
image: wordpress:php8.2-fpm
restart: always
depends_on:
- db
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppassword
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
nginx:
image: nginx:alpine
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- wp_data:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./ssl:/etc/nginx/ssl
depends_on:
- wordpress
volumes:
db_data:
wp_data:
EOF
# 启动服务
docker-compose up -d
# 查看状态
docker-compose ps
# 查看日志
docker-compose logs -f wordpress
四、容器管理常用命令
| 操作 | 命令 | 说明 |
|---|---|---|
| 查看容器 | docker ps -a | 列出所有容器 |
| 查看日志 | docker logs -f 容器名 | 实时查看日志 |
| 进入容器 | docker exec -it 容器名 bash | 进入容器内部 |
| 停止容器 | docker stop 容器名 | 停止运行 |
| 删除容器 | docker rm 容器名 | 删除容器 |
| 查看镜像 | docker images | 列出本地镜像 |
| 清理资源 | docker system prune -a | 清理未使用的镜像和容器 |
五、数据持久化与备份
Docker容器删除后数据会丢失,必须使用Volume进行数据持久化。备份策略:
# 备份MySQL数据库
docker exec mysql_container mysqldump -u root -ppassword wordpress | gzip > backup_$(date +%Y%m%d).sql.gz
# 备份WordPress文件
docker run --rm -v wp_data:/data -v $(pwd):/backup alpine tar czf /backup/wp_backup.tar.gz -C /data .
# 恢复数据库
gunzip < backup_20260101.sql.gz | docker exec -i mysql_container mysql -u root -ppassword wordpress
六、容器安全最佳实践
- 使用官方镜像或可信来源的镜像,定期扫描漏洞
- 容器以非root用户运行,最小权限原则
- 不要在镜像中硬编码密码,使用环境变量或Secret
- 限制容器资源使用(CPU、内存)
- 定期更新基础镜像,及时修复安全漏洞
- 使用docker-compose版本管理,配置文件纳入版本控制
资源限制配置示例:
services:
wordpress:
image: wordpress:php8.2-fpm
deploy:
resources:
limits:
cpus: '1.0'
memory: 512M
reservations:
cpus: '0.5'
memory: 256M