在京东云服务器(或任何 Linux 云主机)上同时部署 Docker 和宝塔面板是完全可行的,但需要注意安装顺序和端口冲突。宝塔面板默认会占用 80、443、20、21、8888 等端口,而 Docker 容器内的服务(如 Nginx、MySQL)也可能占用这些端口。
最稳妥的方案是:先安装 Docker,再安装宝塔面板,并在安装宝塔时选择“不安装”Nginx/Apache 等 Web 服务器组件,或者通过 Docker 来管理这些服务,让宝塔仅作为管理界面使用。
以下是具体的操作步骤:
第一步:安装 Docker
建议先安装 Docker,因为它是底层环境。
-
连接服务器
使用 SSH 工具(如 Xshell、FinalShell 或系统自带的终端)登录你的京东云服务器。 -
执行安装脚本
运行以下命令一键安装 Docker(推荐方式):curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun注:
--mirror Aliyun是为了提速下载,如果网络不通可去掉该参数。 -
启动并设置开机自启
systemctl enable docker systemctl start docker -
验证安装
docker --version docker run hello-world如果看到欢迎信息,说明 Docker 安装成功。
第二步:安装宝塔面板 (Bt-Panel)
在 Docker 已就绪的情况下,安装宝塔面板。为了避免宝塔自动安装 Nginx/Apache 导致与 Docker 内部服务冲突,我们需要在安装过程中进行特殊配置。
-
执行宝塔安装命令
根据你的系统版本(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 脚本(官网会自动识别)。 -
关键步骤:修改配置文件(可选但推荐)
宝塔安装程序默认会尝试安装 Nginx/Apache/Mysql 等软件。由于你已经在用 Docker 管理这些服务,建议在安装过程中:- 当宝塔询问是否安装 Nginx/Apache 时,选择 “否” 或跳过。
- 当询问是否安装 MySQL 时,选择 “否”(Docker 中已有 MySQL)。
- 只保留宝塔面板本身的安装。
如果安装过程中没有弹窗交互,安装完成后,你可以进入宝塔后台,在“软件商店”中点击对应软件的“卸载”,确保它们没有被安装在宿主机上。
-
获取登录地址
安装完成后,终端会输出宝塔的访问地址、用户名和密码。网络访问地址:http://<你的公网IP>:8888/<随机字符串> 默认用户名:root 默认密码:<随机生成的密码>
第三步:配置与避坑指南
这是最关键的一步,解决“共存”问题。
1. 端口冲突处理
- 宝塔面板端口:默认为
8888。 - Web 服务端口:宝塔默认会尝试绑定
80和443。- 方案 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 容器内 | 缓存服务 |
操作逻辑:
- 通过 SSH 连接服务器。
- 运行 Docker 命令拉取镜像、启动容器(或使用宝塔的"docker 管理”插件,如果有)。
- 通过浏览器访问
http://IP:8888登录宝塔。 - 在宝塔中配置域名解析(DNS),设置反向指向 Docker 容器的 IP 和端口。
这样既利用了 Docker 的隔离性和便捷性,又享受了宝塔面板可视化的管理便利。
CLOUD技术笔记