Docker 容器化部署宝塔 Linux 面板,可实现快速部署、环境隔离与迁移,适用于云服务器、物理机等 Linux 环境。本指南基于 Docker 20.10+ 、Linux 内核 3.10+ 环境编写,支持主流发行版(CentOS、Ubuntu、Debian)。

一、前置条件
-
服务器要求
- Linux 系统(CentOS 7+/Ubuntu 18.04+/Debian 9+),推荐 CentOS 7。
- 至少 1GB 内存(推荐 2GB 及以上的云服务器),磁盘空间 ≥ 20GB。
- 服务器已联网,且能访问 Docker Hub 或国内镜像源。
-
安装 Docker 环境若未安装 Docker,执行以下命令快速安装(以 CentOS 为例):
bash
运行
# 卸载旧版本(如有) yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine # 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加 Docker 源(国内推荐阿里云) yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装 Docker CE yum install -y docker-ce docker-ce-cli containerd.io # 启动并设置开机自启 systemctl start docker systemctl enable docker # 验证安装 docker --versionUbuntu/Debian 系统可参考 Docker 官方安装文档。
-
配置 Docker 国内镜像(可选,加速拉取) 编辑
/etc/docker/daemon.json文件:json
{ "registry-mirrors": [ "https://mirror.ccs.tencentyun.com", "https://hub-mirror.c.163.com", "https://mirror.aliyuncs.com" ] }重启 Docker 生效:
bash
运行
systemctl daemon-reload systemctl restart docker
二、部署宝塔面板 Docker 容器
方法 1:使用官方镜像(推荐)
宝塔官方提供了 Docker 镜像,支持快速启动,命令如下:
bash
运行
docker run -d \
--name baota \
--privileged=true \
-p 8888:8888 \
-p 888:888 \
-p 80:80 \
-p 443:443 \
-p 20:20 \
-p 21:21 \
-v /www/wwwroot:/www/wwwroot \
-v /www/backup:/www/backup \
-v /www/wwwlogs:/www/wwwlogs \
-v /www/server:/www/server \
--restart always \
btpanel/baota:latest
命令参数说明
| 参数 | 作用 |
|---|---|
-d |
后台运行容器 |
--name baota |
容器命名为 baota |
--privileged=true |
赋予容器管理员权限(宝塔需要修改系统配置) |
-p 端口映射 |
宿主机端口:容器端口,包含宝塔面板端口、Web 服务端口、FTP 端口 |
-v 目录挂载 |
宿主机目录:容器目录,实现数据持久化,避免容器删除后数据丢失 |
--restart always |
容器随 Docker 启动自动重启 |
方法 2:自定义 Dockerfile 构建镜像(进阶)
若需要定制化配置(如预装插件、修改默认端口),可编写 Dockerfile 自行构建:
dockerfile
# 基础镜像
FROM centos:7
# 维护者信息
MAINTAINER yourname <your@email.com>
# 安装依赖
RUN yum install -y wget curl && yum clean all
# 下载宝塔安装脚本并执行
RUN wget -O install.sh http://download.bt.cn/install/install_6.0.sh && \
bash install.sh ed8484bec
# 暴露端口
EXPOSE 80 443 8888 888 20 21
# 启动命令
CMD ["/usr/sbin/init"]
构建并运行镜像:
bash
运行
# 构建镜像,命名为 my-baota
docker build -t my-baota:latest .
# 运行容器(参数同方法1)
docker run -d --name my-baota --privileged=true -p 8888:8888 ... my-baota:latest
三、初始化宝塔面板
-
获取面板登录信息容器启动后,执行以下命令查看登录地址、用户名和密码:
bash
运行
docker exec -it baota bt default输出示例:
plaintext
============================================= 宝塔面板登录信息 ============================================= 外网面板地址: http://123.xxx.xxx.xxx:8888/xxxxxx 内网面板地址: http://172.17.0.2:8888/xxxxxx 用户名: admin 密码: 123456 ============================================= -
登录面板并初始化
- 浏览器访问外网面板地址,输入用户名和密码登录。
- 首次登录会提示安装 LNMP/LAMP 环境,根据需求选择版本,等待安装完成即可。
四、常见问题与注意事项
-
端口冲突问题
- 若宿主机 80、443、8888 等端口已被占用,可修改端口映射,例如将
-p 8888:8888改为-p 8889:8888,访问时使用IP:8889。 - 查看端口占用:
netstat -tulpn | grep 端口号。
- 若宿主机 80、443、8888 等端口已被占用,可修改端口映射,例如将
-
数据持久化问题
- 务必通过
-v参数挂载数据目录,否则容器删除后,面板配置、网站数据会全部丢失。 - 如需迁移面板,直接复制挂载的宿主机目录到新服务器,重新启动容器即可。
- 务必通过
-
容器权限问题
- 必须添加
--privileged=true参数,否则宝塔无法正常管理服务器服务(如 Nginx、MySQL)。
- 必须添加
-
镜像拉取失败
- 检查 Docker 网络是否正常,或配置国内镜像源后重试。
-
面板无法访问
- 检查服务器防火墙 / 安全组是否放行映射的端口(如 8888、80、443)。
五、容器日常管理命令
bash
运行
# 启动/停止/重启容器
docker start baota
docker stop baota
docker restart baota
# 查看容器日志
docker logs -f baota
# 进入容器命令行
docker exec -it baota bash
# 删除容器(需先停止)
docker stop baota && docker rm baota