常用Docker镜像推荐:建站效率翻倍
小够精选 10 个建站高频 Docker 镜像:网站、数据库、监控、网盘全覆盖。附 Compose 示例和常用命令,新手照抄就能跑起来。
我是小够。
买了 VPS 建站,最省事的路线不是一个个装软件,而是用 Docker:一个命令拉起一个服务,环境隔离,删了重装也不心疼。今天推荐 10 个我建站时反复用到的镜像,都是 Docker Hub 上的公开镜像,照着抄就行。
先说一句:镜像只管"跑起来",生产环境的数据备份、安全加固还得自己做,别指望镜像替你操心。
网站类
1. nginx:万能的 Web 服务器
建站绕不开它,反向代理、静态站、HTTPS 跳转都靠它。官方镜像 nginx 体积小、文档全,新手直接用 nginx:stable 标签,别用 latest,版本固定才不翻车。
2. wordpress:博客站长的老朋友
个人博客最快的一条路就是 WordPress。官方 wordpress 镜像配合 MySQL,Compose 一把梭,十分钟上线。注意 PHP 版本和插件兼容,升级前先快照。
3. halo:国产开源博客
如果你不喜欢 WordPress 的臃肿,可以试试 halohub/halo。Java 写的,主题好看,中文社区活跃,个人博客完全够用。
4. caddy:自带 HTTPS 的 Web 服务器
caddy 镜像最大的卖点是自动申请和续期 Let’s Encrypt 证书,配反向代理几行配置搞定。不想折腾 Nginx + certbot 的人,Caddy 是真香。
数据与缓存类
5. mariadb:数据库首选
MySQL 的开源分支,mariadb 镜像和 MySQL 完全兼容,WordPress、Halo 都能直接用。记住把数据目录挂载到宿主机,不然容器一删数据全没。
6. redis:缓存加速
网站访问量上来后,加一层 Redis 缓存,数据库压力小很多。官方 redis 镜像开箱即用,记得设置密码,别裸奔。
运维工具类
7. portainer:容器可视化管理
命令行看不惯?portainer/portainer-ce 给你一个网页面板,容器启停、日志查看点点鼠标就行。新手友好,但面板本身也要设强密码、别暴露公网。
8. watchtower:镜像自动更新
containrrr/watchtower 会定时检查容器镜像有没有新版,有就自动更新。对个人小站很省心,但生产环境建议关掉——自动更新可能带来不兼容,手动更新更稳。
9. uptime-kuma:网站监控
louislam/uptime-kuma 是个漂亮的监控面板,网站挂了就发通知(支持 Telegram、邮件等多种方式)。建站必备,免费又好用。
网盘同步类
10. nextcloud:私有网盘
nextcloud 镜像搭个私有网盘,文件同步、多端访问,替代部分网盘功能。注意它比较吃资源,1 核 1G 跑起来有点喘,2G 内存起步更舒服。
一个 Compose 示例
以 WordPress 为例,一个 docker-compose.yml 就能把网站和数据库一起跑起来:
services:
db:
image: mariadb:11
environment:
MARIADB_ROOT_PASSWORD: 请改成强密码
MARIADB_DATABASE: wp
MARIADB_USER: wpuser
MARIADB_PASSWORD: 请改成强密码
volumes:
- ./db-data:/var/lib/mysql
web:
image: wordpress:6
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wp
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: 请改成强密码
volumes:
- ./wp-data:/var/www/html
depends_on:
- db
docker compose up -d,完事。数据都在 ./db-data 和 ./wp-data 里,备份这两个目录就行。
Docker 常用命令速查
docker compose up -d # 后台启动
docker compose down # 停止并删除容器(数据卷保留)
docker compose logs -f # 实时看日志
docker compose pull # 拉取最新镜像
docker compose restart web # 重启某个服务
docker ps # 看运行中的容器
docker images # 看本地镜像
docker system prune # 清理无用镜像和容器(谨慎用)
日志是排查问题的第一手资料,容器起不来先 logs 看报错,别瞎猜。
镜像拉取慢怎么办
国内服务器拉 Docker Hub 经常慢到超时,几个办法:
- 配置镜像加速:用公开的镜像加速服务,改
/etc/docker/daemon.json加上registry-mirrors,重启 Docker 生效。 - 境外服务器直接拉:VPS 本来就在境外,一般不存在这个问题;卡的多半是国内机器。
- 别在高峰期更新:晚高峰拉大镜像,超时是常态,换个时间再试。
加速地址会变,配之前搜一下最新的可用地址,别抄过期教程。
低配机器的资源规划
1 核 1G 的机器,Docker 不是随便装的,给个参考:
- WordPress + MariaDB:约 600-800M 内存,1G 勉强够,2G 舒服
- 再加 Redis:多 100M 左右,可以接受
- Portainer + Uptime Kuma:共约 200M,监控类常驻没问题
- Nextcloud:单独就要 500M+,1G 机器别硬上
原则:内存留 20% 余量,跑满 100% 的机器,稍微一波动就 OOM(内存溢出杀进程),网站直接 502。
进阶:compose 文件常用字段解释
上面的示例里有几个关键字段,新手容易懵:
- image:用的哪个镜像,冒号后面是版本号,
mariadb:11就是 11 版 - ports:
"8080:80"表示把宿主机的 8080 端口映射到容器的 80 端口,冒号左边是宿主机、右边是容器 - volumes:
./db-data:/var/lib/mysql把宿主机目录挂载到容器里,冒号左边是宿主机路径,数据持久化全靠它 - environment:传给容器的环境变量,数据库密码、账号都在这里配
- depends_on:启动顺序,
web依赖db,保证数据库先起来 - restart: always:机器重启后容器自动跟着启动,生产环境必备
容器安全三件套
容器跑起来了,安全别落下:
- 别把管理端口暴露公网:Portainer 的 9000 端口、数据库的 3306 端口,只监听内网或干脆不映射,用 SSH 隧道访问
- 默认密码全改掉:MariaDB 的 root 密码、Portainer 的 admin 密码,初始密码都是公开的,不改等于没锁门
- 容器用户降权:能用非 root 用户跑的服务就别用 root,Dockerfile 里加一行
USER指令的事
Docker Compose vs Docker run
新手常问:Compose 和 docker run 选哪个?小够的建议:超过一个容器,永远用 Compose。
docker run 适合临时测试:
# 临时跑个 nginx 看看
docker run -d -p 8080:80 nginx:stable
但参数一多就记不住,重启机器还得重敲。Compose 把配置写进文件,版本管理、备份、迁移都方便。个人建站,Compose 是唯一正解。
另外,docker compose(空格版)是新版插件,docker-compose(横线版)是老版独立程序。新机器装新版,别抄老教程的横线版命令。
新手第一个 Compose 项目:个人导航页
学了一堆概念,动手做个小项目巩固:搭个个人导航页 homer,把常用的网站收拢到一个页面:
services:
homer:
image: bastienwirtz/homer:latest
ports:
- "8080:8080"
volumes:
- ./homer-assets:/www/assets
restart: always
docker compose up -d,打开 http://你的IP:8080,一个漂亮的导航页就出来了。配置文件在 ./homer-assets/config.yml,照着示例改,把你的常用网站填进去。
这个项目虽小,五脏俱全:拉镜像、端口映射、数据挂载、自动重启,全练到了。跑通了它,Compose 就算入门了。
镜像更新策略
镜像不是一劳永逸,更新策略定一下:
- 安全更新:看到 CVE 公告,该更新就更新,别拖
- 大版本升级:比如 MariaDB 10 升 11,先看更新日志,备份好数据再升
- 更新流程:
docker compose pull拉新镜像 →docker compose up -d重启 → 检查服务正常 → 旧镜像docker image prune清理 - 回滚:新镜像有问题,改回旧版本号再
up -d,Compose 回滚就是这么简单
版本 pin 死 + 定期更新 + 随时可回滚,这三件套配齐,容器运维就稳了。
小够的提醒
- 镜像认准官方:优先用带 Official Image 标记的,第三方镜像先看 Star 数和更新时间,半年没更新的别用。
- 版本要 pin 死:生产环境永远写具体版本号(如
mariadb:11),别用 latest,否则某天更新直接炸站。 - 数据必须挂载:数据库、网站文件一定要做 volume 映射,容器是临时的,数据不是。
- 低配机器别贪多:1 核 1G 的机器同时跑 WordPress、MySQL、Redis 就已经很吃力了,内存不够先升级配置,别硬扛。
- 定期更新镜像:
docker compose pull && docker compose up -d,安全补丁要及时跟上,别让容器带着已知漏洞裸奔。
Docker 是建站效率神器,但神器也要配上备份和好习惯。镜像帮你省的是部署时间,省不了运维的责任心。