Docker 容器化部署宝塔 Linux 面板

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

一、前置条件

  1. 服务器要求

    • Linux 系统(CentOS 7+/Ubuntu 18.04+/Debian 9+),推荐 CentOS 7。
    • 至少 1GB 内存(推荐 2GB 及以上的云服务器),磁盘空间 ≥ 20GB。
    • 服务器已联网,且能访问 Docker Hub 或国内镜像源。
  2. 安装 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 --version

    Ubuntu/Debian 系统可参考 Docker 官方安装文档

  3. 配置 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

三、初始化宝塔面板

  1. 获取面板登录信息容器启动后,执行以下命令查看登录地址、用户名和密码:

    bash

    运行

    复制代码
    docker exec -it baota bt default

    输出示例:

    plaintext

    复制代码
    =============================================
    宝塔面板登录信息
    =============================================
    外网面板地址: http://123.xxx.xxx.xxx:8888/xxxxxx
    内网面板地址: http://172.17.0.2:8888/xxxxxx
    用户名: admin
    密码: 123456
    =============================================
  2. 登录面板并初始化

    • 浏览器访问外网面板地址,输入用户名和密码登录。
    • 首次登录会提示安装 LNMP/LAMP 环境,根据需求选择版本,等待安装完成即可。

四、常见问题与注意事项

  1. 端口冲突问题

    • 若宿主机 80、443、8888 等端口已被占用,可修改端口映射,例如将 -p 8888:8888 改为 -p 8889:8888,访问时使用 IP:8889
    • 查看端口占用:netstat -tulpn | grep 端口号
  2. 数据持久化问题

    • 务必通过 -v 参数挂载数据目录,否则容器删除后,面板配置、网站数据会全部丢失。
    • 如需迁移面板,直接复制挂载的宿主机目录到新服务器,重新启动容器即可。
  3. 容器权限问题

    • 必须添加 --privileged=true 参数,否则宝塔无法正常管理服务器服务(如 Nginx、MySQL)。
  4. 镜像拉取失败

    • 检查 Docker 网络是否正常,或配置国内镜像源后重试。
  5. 面板无法访问

    • 检查服务器防火墙 / 安全组是否放行映射的端口(如 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
相关推荐
坚定信念,勇往无前2 小时前
docker安装mongodb
mongodb·docker·容器
Destiny_where2 小时前
k8s常用指令集合
linux·docker·kubernetes
诸神黄昏EX2 小时前
Android Qualcomm USB 专题系列【总篇:USB HAL架构】
android·linux·网络
DeeplyMind2 小时前
Linux 页表机制详解(x86_64 架构)
linux·驱动开发
2401_858286112 小时前
OS39.5.【Linux】分析ar命令生成的归档文件的格式
linux·ar·unix
叮咚侠2 小时前
将已创建的Elasticsearch 8.12.0的docker容器中的数据挂载到宿主机操作步骤
运维·elasticsearch·docker·容器·kibana
XiaoHu02072 小时前
Linux关于进程(第一弹)
linux·运维·服务器
YoungHong19922 小时前
[教程] Linux 服务器无 Root (Sudo) 权限安装 CUDA Toolkit 终极指南
linux·运维·服务器
麒qiqi2 小时前
【Linux 进程间通信】信号通信与共享内存核心解析
java·linux·算法