京东云服务器上怎么同时部署Docker和宝塔面板?

在京东云服务器(或任何 Linux 云主机)上同时部署 Docker 和宝塔面板是完全可行的,但需要注意安装顺序端口冲突。宝塔面板默认会占用 80、443、20、21、8888 等端口,而 Docker 容器内的服务(如 Nginx、MySQL)也可能占用这些端口。

最稳妥的方案是:先安装 Docker,再安装宝塔面板,并在安装宝塔时选择“不安装”Nginx/Apache 等 Web 服务器组件,或者通过 Docker 来管理这些服务,让宝塔仅作为管理界面使用。

以下是具体的操作步骤:

第一步:安装 Docker

建议先安装 Docker,因为它是底层环境。

  1. 连接服务器
    使用 SSH 工具(如 Xshell、FinalShell 或系统自带的终端)登录你的京东云服务器。

  2. 执行安装脚本
    运行以下命令一键安装 Docker(推荐方式):

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

    注:--mirror Aliyun 是为了提速下载,如果网络不通可去掉该参数。

  3. 启动并设置开机自启

    systemctl enable docker
    systemctl start docker
  4. 验证安装

    docker --version
    docker run hello-world

    如果看到欢迎信息,说明 Docker 安装成功。


第二步:安装宝塔面板 (Bt-Panel)

在 Docker 已就绪的情况下,安装宝塔面板。为了避免宝塔自动安装 Nginx/Apache 导致与 Docker 内部服务冲突,我们需要在安装过程中进行特殊配置。

  1. 执行宝塔安装命令
    根据你的系统版本(CentOS/Ubuntu/Debian),运行对应的安装命令。以 CentOS 7/8 为例:

    yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

    注意:如果你使用的是 Ubuntu,请将 yum install 替换为 apt-get update && apt-get install -y wget,并将 install_6.0.sh 改为对应的 ubuntu 脚本(官网会自动识别)。

  2. 关键步骤:修改配置文件(可选但推荐)
    宝塔安装程序默认会尝试安装 Nginx/Apache/Mysql 等软件。由于你已经在用 Docker 管理这些服务,建议在安装过程中:

    • 当宝塔询问是否安装 Nginx/Apache 时,选择 “否” 或跳过。
    • 当询问是否安装 MySQL 时,选择 “否”(Docker 中已有 MySQL)。
    • 只保留宝塔面板本身的安装。

    如果安装过程中没有弹窗交互,安装完成后,你可以进入宝塔后台,在“软件商店”中点击对应软件的“卸载”,确保它们没有被安装在宿主机上。

  3. 获取登录地址
    安装完成后,终端会输出宝塔的访问地址、用户名和密码。

    网络访问地址:http://<你的公网IP>:8888/<随机字符串>
    默认用户名:root
    默认密码:<随机生成的密码>

第三步:配置与避坑指南

这是最关键的一步,解决“共存”问题。

1. 端口冲突处理

  • 宝塔面板端口:默认为 8888
  • Web 服务端口:宝塔默认会尝试绑定 80443
    • 方案 A(推荐):在宝塔面板中,不要创建网站,或者将网站的监听端口改为非标准端口(如 8080, 9000),然后使用 Nginx 反向。
    • 方案 B(纯 Docker 模式):在宝塔“软件商店”中卸载 Nginx 和 Apache。所有的 Web 服务都运行在 Docker 容器中。
      • 在宝塔的“文件”管理中,你可以直接查看 /var/www/docker 等目录下的挂载点。
      • 如果需要管理域名解析,可以在宝塔的“域名”功能中添加,但实际流量由 Docker 容器处理。

2. 防火墙与安全组配置

京东云服务器有安全组(控制台设置)和系统防火墙(iptables/firewalld)双重防护。

  • 京东控制台:务必在“安全组”规则中放行以下端口:
    • 8888 (宝塔面板)
    • 22 (SSH)
    • 你 Docker 容器映射出来的业务端口(例如 80, 443, 3306 等,需根据实际容器配置开放)。
  • 系统防火墙
    如果安装了 firewalld,需要放行宝塔端口:

    firewall-cmd --zone=public --add-port=8888/tcp --permanent
    firewall-cmd --reload

3. 数据持久化

在使用 Docker 部署数据库或应用时,务必使用 -v 参数将容器数据卷映射到宿主机的特定目录(例如 /www/docker/mysql/data),防止容器删除后数据丢失。宝塔的文件管理器可以直接管理这些宿主机目录。

总结架构建议

为了最佳实践,建议的架构如下:

组件 部署位置 说明
操作系统 京东云 ECS 基础环境
Docker 宿主机 容器运行时引擎
宝塔面板 宿主机 (Port 8888) 仅作为 UI 管理界面,用于管理 Docker 镜像、容器、文件和域名解析
Nginx/MySQL Docker 容器内 实际业务服务,通过端口映射暴露给外部
Redis Docker 容器内 缓存服务

操作逻辑

  1. 通过 SSH 连接服务器。
  2. 运行 Docker 命令拉取镜像、启动容器(或使用宝塔的"docker 管理”插件,如果有)。
  3. 通过浏览器访问 http://IP:8888 登录宝塔。
  4. 在宝塔中配置域名解析(DNS),设置反向指向 Docker 容器的 IP 和端口。

这样既利用了 Docker 的隔离性和便捷性,又享受了宝塔面板可视化的管理便利。