宝塔中部署Docker容器需三步:先安装Docker引擎(非仅管理插件),再配置国内镜像加速器(如ustc.edu.cn),最后正确设置端口映射(避免--net=host与-p冲突)。

docker 容器在宝塔面板里不是“一键点一下就完事”,而是分三步走:装好引擎、配对镜像源、再按需映射端口。跳过任意一步,都可能卡在拉不到镜像、容器起不来、或者网页打不开。
宝塔里装 Docker 管理器 ≠ 装好 Docker 引擎
很多人点开软件商店装了“Docker管理器”,就以为 docker 命令能用了,结果执行 docker version 报错 Command not found。这是因为宝塔的 Docker 管理器只是图形界面,底层引擎得单独装。
- 推荐用宝塔内置方式:登录面板 → 软件商店 → 搜索 “Docker” → 安装 Docker管理器 和 Docker Compose(它会自动帮你装好
docker和dockerd) - 如果装完仍报错,手动验证:
systemctl status docker看服务是否 active;若 inactive,运行systemctl start docker并加自启systemctl enable docker - 别用第三方脚本如
curl -fsSL https://get.docker.com | bash直接装——它和宝塔管理器冲突,可能导致面板无法识别容器状态
镜像拉不下来?大概率是没配 registry-mirrors
国内直连 docker.io 极慢甚至超时,docker pull nginx 卡住不动、或报 unauthorized: authentication required(其实不是权限问题,是镜像站拒连)。
- 必须配置镜像加速器:编辑
/etc/docker/daemon.json,填入至少一个国内镜像源,例如:"https://docker.mirrors.ustc.edu.cn" - 写完记得 reload:
systemctl daemon-reload && systemctl restart docker - 验证是否生效:运行
docker info | grep "Registry Mirrors" -A 1,看到你填的地址才算成功 - 宝塔面板里“Docker管理器”页面右上角的“镜像加速”设置是假的——它只改前端显示,不写入 daemon.json,别信
端口映射失败?先看 --net=host 和 -p 冲突
部署宝塔面板容器时,有人照抄命令用了 --net=host 还硬加 -p 8888:8888,结果容器启动失败,日志里报 conflicting options: cannot specify both --network and --publish。
-
--net=host表示容器直接用宿主机网络,所有端口(包括 8888、80、443)自动暴露,此时不能用-p - 如果要用端口映射(比如只想开 8888,屏蔽其他端口),必须去掉
--net=host,改用默认 bridge 网络,并显式写-p 8888:8888 -p 80:80 -p 443:443 - 群晖或某些云服务器(如腾讯云轻量)还要额外放行安全组/防火墙端口,仅容器映射不够
- 宝塔面板里新建容器时,“端口映射”表格填的是
服务器端口:容器端口,顺序反了就白配
拉取 BAOTA 镜像要认准域名和标签
搜“baota”出来的镜像五花八门,有个人魔改版、带后门版、旧版 PHP 不兼容版。官方唯一可信源是 xxx.xuanyuan.run/btpanel/baota,不是 baota/baota 或 centos/baota。
- 拉取命令必须带完整域名:
docker pull xxx.xuanyuan.run/btpanel/baota:latest -
:latest当前对应 v9.3.0,但生产环境建议锁定版本,比如:9.3.0,避免某天latest变成测试版导致面板异常 - 镜像体积约 1.2GB,首次拉取耗时较长,别误判为卡死;可用
docker images | grep btpanel确认是否存在 - 挂载目录路径不能写错:
/www/wwwroot对应网站根目录,/www/server/data是 MySQL 数据库目录——写反或漏挂,重启容器后网站或数据库就丢了


















