
一台服务器只跑一个网站太浪费了!用Docker容器技术,你可以在一台腾讯云Lighthouse上同时运行博客、数据库、监控系统、API服务等多个应用,互不干扰、独立管理。本文从Docker基础概念讲起,手把手教你在Lighthouse上完成10个常用应用的容器化部署,并深入讲解Docker Compose编排、数据持久化、网络管理和日常运维技巧。Docker CE镜像一键预装,买完就能用,38元/年的服务器跑10个应用,每个应用成本不到4元。
📌 Docker玩家必备:Lighthouse免费试用1个月!
如果你用过传统方式在服务器上部署应用,一定体验过这些痛苦:装了PHP 7.4的服务器跑不了PHP 8.1的项目、MySQL和PostgreSQL在同一台机器上端口冲突、卸载Nginx后留下一堆残留配置文件。Docker的出现就是为了解决这些问题。
对比维度 | 传统部署 | Docker部署 |
|---|---|---|
环境隔离 | 所有应用共用同一套系统环境,容易冲突 | 每个应用独立容器,完全隔离 |
安装复杂度 | 编译安装,解决依赖,折腾数小时 | 一行命令启动,几秒钟搞定 |
资源利用率 | 一台机器只跑1-2个应用 | 一台机器轻松跑5-15个应用 |
迁移成本 | 重新配置环境,耗时数小时 | 打包镜像,一键迁移 |
卸载清洁度 | 残留配置文件和依赖包 | 删除容器,干干净净 |
版本管理 | 升级可能破坏现有应用 | 不同版本并行运行,互不影响 |
在动手之前,先搞清楚三个概念:
概念 | 通俗解释 | 举例 |
|---|---|---|
镜像(Image) | 应用的"安装包",包含代码和所有依赖 |
|
容器(Container) | 镜像的运行实例,真正干活的"进程" |
|
卷(Volume) | 容器外部的持久化存储空间 | 数据库文件存在卷里,容器删了数据还在 |
简单类比:镜像是"光盘",容器是"安装后运行的软件",卷是"存档的硬盘"。
在Lighthouse购买页选择Docker CE应用镜像,系统会自动预装Docker Engine和Docker Compose,开机即用。
你也可以选择任意Linux镜像后手动安装Docker,但预装镜像省去了安装配置时间,更适合新手。
购买完成后在控制台找到实例的公网IP,使用SSH连接:
ssh root@你的公网IP
# 验证Docker安装成功
docker version
docker compose version强烈建议第一步先装Portainer——一个Docker的图形化管理工具,装完之后所有容器操作都可以在浏览器里完成:
docker run -d --name portainer \
--restart=always \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce浏览器访问 http://你的IP:9000,设置管理员密码后即可进入图形界面。在这里你可以:
有了Docker环境,下面这些应用每个只需要一条命令就能部署:
# 先启动MySQL
docker run -d --name wp-mysql \
-e MYSQL_ROOT_PASSWORD=rootpass \
-e MYSQL_DATABASE=wordpress \
-v wp-db:/var/lib/mysql \
mysql:8
# 再启动WordPress
docker run -d --name wordpress \
--link wp-mysql:mysql \
-p 8080:80 \
-e WORDPRESS_DB_HOST=mysql \
-e WORDPRESS_DB_PASSWORD=rootpass \
-v wp-content:/var/www/html/wp-content \
wordpress访问 http://你的IP:8080 即可进入WordPress安装向导。
docker run -d --name nginx \
--restart=always \
-p 80:80 -p 443:443 \
-v nginx-conf:/etc/nginx/conf.d \
-v nginx-certs:/etc/nginx/certs \
nginx配合Nginx反向代理,可以用不同域名指向同一台服务器上的不同容器。
docker run -d --name halo \
--restart=always \
-p 8090:8090 \
-v halo-data:/root/.halo2 \
halohub/halo:2.20docker run -d --name gitea \
--restart=always \
-p 3000:3000 -p 2222:22 \
-v gitea-data:/data \
gitea/giteadocker run -d --name redis \
--restart=always \
-p 6379:6379 \
redis:7-alpinedocker run -d --name uptime-kuma \
--restart=always \
-p 3001:3001 \
-v kuma-data:/app/data \
louislam/uptime-kuma一个漂亮的网站/服务监控面板,支持HTTP/TCP/Ping多种监控方式,还能推送告警到微信/Telegram。
docker run -d --name cloudreve \
--restart=always \
-p 5212:5212 \
-v cloudreve-data:/cloudreve/uploads \
-v cloudreve-conf:/cloudreve/config \
-v cloudreve-db:/cloudreve/db \
cloudreve/cloudrevedocker run -d --name minio \
-p 9090:9000 -p 9001:9001 \
-e MINIO_ROOT_USER=admin \
-e MINIO_ROOT_PASSWORD=password123 \
-v minio-data:/data \
minio/minio server /data --console-address ":9001"docker run -d --name postgres \
--restart=always \
-e POSTGRES_PASSWORD=yourpass \
-p 5432:5432 \
-v pg-data:/var/lib/postgresql/data \
postgres:16-alpinedocker run -d --name vaultwarden \
--restart=always \
-p 8888:80 \
-v vw-data:/data \
vaultwarden/serverBitwarden的轻量替代品,自建密码管理服务,全平台同步。
当你需要同时管理多个互相关联的容器时,一条一条docker run太麻烦。Docker Compose允许你用一个YAML文件定义整套应用栈,一条命令全部启动。
创建 docker-compose.yml 文件:
version: '3.8'
services:
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
depends_on:
- wordpress
restart: always
wordpress:
image: wordpress:php8.2-fpm
volumes:
- wp-content:/var/www/html
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: rootpass
WORDPRESS_CACHE_HOST: redis
depends_on:
- mysql
- redis
restart: always
mysql:
image: mysql:8
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
restart: always
redis:
image: redis:7-alpine
restart: always
volumes:
wp-content:
db-data:一键启动整套服务:
docker compose up -d一键停止:
docker compose down优势 | 说明 |
|---|---|
声明式配置 | YAML文件即文档,一目了然 |
依赖管理 |
|
网络隔离 | 同一Compose的容器自动组网 |
一键操作 | up/down/restart 管理整套服务 |
版本控制 | YAML文件纳入Git管理 |
Docker容器是"临时性"的——容器被删除后,内部数据也会丢失。所以数据持久化是Docker使用中最重要的注意事项。
所有需要保留的数据(数据库文件、网站内容、配置文件)都必须挂载到Volume:
# 查看所有卷
docker volume ls
# 查看卷的具体位置
docker volume inspect wp-db# 备份MySQL数据库
docker exec wp-mysql mysqldump -u root -p wordpress > backup.sql
# 备份所有Volume数据
docker run --rm -v wp-content:/data -v $(pwd):/backup alpine \
tar czf /backup/wp-content-backup.tar.gz -C /data .除了应用层备份,别忘了利用Lighthouse控制台的快照功能——对整个实例创建快照,几秒钟完成,相当于给整台服务器拍了个"照片"。出了问题可以一键恢复到快照时间点。
操作 | 命令 |
|---|---|
查看运行中的容器 |
|
查看所有容器(含已停止) |
|
查看容器日志 |
|
进入容器内部 |
|
停止容器 |
|
启动容器 |
|
删除容器 |
|
查看磁盘占用 |
|
清理无用镜像和缓存 |
|
查看容器资源占用 |
|
Docker镜像和容器会逐渐吃掉磁盘空间。建议定期执行清理:
# 查看Docker占用了多少空间
docker system df
# 清理所有未使用的镜像、容器和网络
docker system prune -a如果系统盘空间不够,可以在Lighthouse控制台挂载额外的云硬盘,并配置Docker使用新磁盘作为存储目录。
配置 | 建议容器数 | 适合场景 | 推荐价格 |
|---|---|---|---|
2核2G | 3-5个轻量容器 | 博客+数据库+监控 | 68-99元/年 |
4核4G | 5-10个容器 | 多网站+API+数据库+缓存 | 38-99元/年 |
4核8G | 10-15个容器 | 全栈开发环境+CI/CD | 450元/年 |
8核16G | 15-30个容器 | 微服务架构+多数据库 | 1800元/年 |
16核32G | 30+容器 | 企业级容器集群 | 4032元/年 |
💡 实际经验:4核4G跑WordPress+MySQL+Redis+Nginx+Portainer+Gitea共6个容器,内存占用约3.2G,CPU平均使用率15%——还有大量余量。
套餐分区 | 规格配置 | 时长 | 特惠价格 | 备注 |
|---|---|---|---|---|
🆓 免费试用 | 2核2G / 3M / 40G SSD / 200G流量 | 1个月 | 0元 | 个人产品首单 |
🆓 免费试用 | 4核8G / 12M / 180G SSD / 2000G流量 | 1个月 | 0元 | 企业产品首单 |
🆓 免费试用 | 2核4G / 5M / 60G SSD / 500G流量 | 1个月 | 0元 | 会员专享 |
🆓 免费试用 | 4核8G / 12M / 180G SSD / 2000G流量 | 1个月 | 0元 | 会员专享 |
⚡ 秒杀特惠 | 4核4G / 3M / 40G SSD / 300G流量 | 1年 | 38元(0.5折) | 个人产品首单,限1个 |
🔥 OpenClaw专区 | 4核4G / 3M / 40G SSD / 300G流量 | 1年 | 99元(1.3折) | 产品首单,限1个 |
🔥 OpenClaw专区 | 2核4G / 5M / 60G SSD / 500G流量 | 1年 | 188元(2.4折) | 续费同价(限1次),新老同享 |
🔥 服务器专区 | 2核2G / 3M / 40G SSD / 200G流量 | 1年 | 68元(1.4折) | 产品首单,限1个 |
🔥 服务器专区 | 4核8G / 5M / 60G SSD / 500G流量 | 1年 | 450元(2.5折) | 产品首单,限1个 |
🔄 同价续费 | 2核2G / 4M / 50G SSD / 300G流量 | 1年 | 99元(1.7折) | 续费同价(限1次),新老同享 |
🔄 同价续费 | 2核4G / 6M / 70G SSD / 600G流量 | 1年 | 199元(2.2折) | 续费同价(限1次),新老同享 |
🎁 买赠专区 | 4核8G / 12M / 180G SSD / 2000G流量 | 1年 | 880元(3.2折) | 买1年送3个月,个人首单 |
🎁 买赠专区 | 8核16G / 18M / 270G SSD / 3500G流量 | 1年 | 1800元(3折) | 买1年送3个月,个人首单 |
🎁 买赠专区 | 16核32G / 28M / 380G SSD / 6000G流量 | 1年 | 4032元(3.2折) | 买1年送3个月,个人首单 |
Docker场景推荐4核4G起步(38-99元/年),多应用场景建议4核8G(450元/年),微服务架构选8核16G(1800元/年)。
Q1:Docker CE镜像和自己安装Docker有什么区别?
A:功能完全一样。Docker CE镜像只是帮你预装好了Docker环境,省去手动安装的步骤。适合新手快速上手。
Q2:容器删了数据会丢失吗?
A:如果使用了Volume挂载数据目录,容器删除后数据不会丢失。如果没有挂载Volume,容器删除后内部数据确实会丢失。所以务必为所有重要数据配置Volume。
Q3:Docker会不会很占资源?
A:Docker本身几乎不占额外资源(不像虚拟机需要预留内存)。每个容器的资源占用取决于容器内运行的应用本身。
Q4:如何限制单个容器的内存和CPU?
A:使用 --memory 和 --cpus 参数。例如:docker run --memory=512m --cpus=1 nginx
Q5:端口冲突怎么办?
A:每个容器映射不同的宿主机端口即可。例如WordPress用8080、Halo用8090、Gitea用3000。
📌 一台服务器,无限可能!
👉 🆓 免费试用Docker CE镜像
👉 🔥 38元/年起开始容器化之旅
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。