宝塔面板官方不提供也不支持Docker部署;所有第三方镜像均存在权限、生命周期、网络及数据持久化等严重隐患;仅测试可用,需privileged模式、强制挂载/www和/panel、手动初始化;管理端口绝不可映射,推荐宿主机装宝塔+容器跑应用。

宝塔面板官方不提供 Docker 镜像,也明确不支持容器化部署 —— 这是核心前提,跳过这点直接拉镜像大概率会失败或功能异常。
为什么找不到 bt.cn 官方 Docker 镜像
宝塔官网(www.bt.cn)从未发布、维护或认证任何 Docker 镜像。Docker Hub 上所有标榜“宝塔”“BT Panel”“Baota”的镜像均为第三方构建,多数基于 CentOS 7 + 手动安装脚本,存在严重隐患:
- 镜像内预装的
bt服务常以 root 权限自启,且未适配容器生命周期(如 SIGTERM 无法正常关闭) - 依赖 systemd 或 init 进程(Docker 默认无 systemd),导致
service bt start静默失败 - 面板绑定
0.0.0.0:8888,但容器内网络栈与宿主机端口映射后,部分功能(如文件上传、SSL 证书申请)会因内部 IP 判定错误而中断 - 日志、网站数据、数据库等路径硬编码在
/www,未通过卷挂载就运行,重启容器即丢配置
强行运行第三方镜像的最低可行操作
仅适用于测试环境,且必须满足以下条件:
- 使用
docker run -d --privileged --name bt -p 8888:8888 -p 80:80 -p 443:443 -p 20:20 -p 21:21 -p 22:22 -p 3306:3306 -v /path/to/www:/www -v /path/to/bt:/www/server/panel -
--privileged是必需的:宝塔需要修改内核参数(如net.ipv4.ip_forward)、挂载 proc/sysfs、操作 iptables,普通 cap-add 不够 - 必须挂载
/www(站点根目录)和/www/server/panel(面板数据),否则每次重启都重装 - 首次启动后需手动进容器执行
curl -sSO http://download.bt.cn/install/install_6.0.sh && bash install_6.0.sh—— 很多镜像所谓“预装”只是假象,实际未初始化 - 访问
http://宿主机IP:8888后,初始账号密码不会显示在终端,得查容器日志:docker logs bt | grep -i "username\|password"
端口映射的隐藏陷阱:8888 可用,22 和 3306 危险
把宿主机 22 映射给宝塔容器,等于把容器 SSH 暴露到公网 —— 而容器内通常跑的是精简版 OpenSSH,无 fail2ban、无登录审计,极易被爆破。同理,3306 直接映射意味着 MySQL 对外裸奔。
- 正确做法:Web 端口(
80/443/8888)可映射;SSH、MySQL、FTP 等管理端口**绝不映射到宿主机**,改用docker exec -it bt /bin/bash进入操作 - 若必须远程连 MySQL,应在容器内用
mysql -u root -p -h 127.0.0.1,再通过宝塔面板「数据库」页授权内网 IP(如172.17.0.0/16),而非开0.0.0.0:3306 - 宝塔监听的
8888端口本身不校验来源 IP,务必在宿主机加防火墙规则(如ufw allow from 192.168.1.100 to any port 8888)
真正稳定的方案是:宿主机装宝塔,再用 Docker 跑网站应用(PHP/Node/Python),由宝塔反向代理到容器。把宝塔塞进容器,就像把路由器刷成安卓系统——能亮屏,但信号差、发热大、更新无保障。











