前一段时间有人问我怎么在Docker的Debian镜像上部署宝塔面板,Docker Hub上目前大部分是基于CentOS系统的宝塔面板,而且RedHat和Ubuntu/Debian本身也有一定的命令差异,于是我就顺手写了这个教程,这样也方便了我自己。

先放出我做好的Docker镜像:https://hub.docker.com/r/xiwangly/baota

先拉取Debian镜像

docker pull debian

运行

docker run -itd --privileged=true --shm-size=1g --name=baota --net=host --restart=always -v /www/wwwroot:/www/wwwroot debian

进入容器内部

docker exec -it baota /bin/bash

替换镜像源(有良好的国际互联网连接则可以不用)&更新源

sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && apt-get update

设置临时环境变量,用于静态交互

export DEBIAN_FRONTEND=noninteractive

安装软件包,如果不使用curl安装宝塔面板则可以不安装curl,wget同理,其它的软件包真的用不到也可以不安装

apt-get install -y init procps wget iproute2
//apt-get install -y curl

安装宝塔面板

下面两个命令二选一

宝塔开心版出自https://bt.sy/

(总感觉这样发出来不太好)

试验性Centos/Ubuntu/Debian安装命令 独立运行环境(py3.7)可能存在少量兼容性问题

curl -sSO http://io.bt.sy/install/install_panel.sh && bash install_panel.sh

Debian安装命令:

wget -O install.sh http://io.bt.sy/install/install-ubuntu_6.0.sh && bash install.sh

询问是否安装,回复y继续

中途可能会遇到报错,自行解决

安装完成后,输入bt可查看命令,如果输入了这个就直接交互数字就行了

bt
===============宝塔面板命令行==================
(1) 重启面板服务 (8) 改面板端口
(2) 停止面板服务 (9) 清除面板缓存
(3) 启动面板服务 (10) 清除登录限制
(4) 重载面板服务 (11) 取消入口限制
(5) 修改面板密码 (12) 取消域名绑定限制
(6) 修改面板用户名 (13) 取消IP访问限制
(7) 强制修改MySQL密码 (14) 查看面板默认信息
(22) 显示面板错误日志 (15) 清理系统垃圾
(23) 关闭BasicAuth认证 (16) 修复面板(检查错误并更新面板文件到最新版)
(24) 关闭动态口令认证 (17) 设置日志切割是否压缩
(25) 设置是否保存文件历史副本 (18) 设置是否自动备份面板
(0) 取消 (29) 取消访问设置验证
===============================================
请输入命令编号:
===============================================
已取消!

输入bt 11取消入口限制

bt 11
===============================================
正在执行(11)...
===============================================
Reload Bt-Panel.. done
-已取消入口限制,请在URL地址中增加/login访问面板

输入bt 6修改面板用户名

bt 6
===============================================
正在执行(6)...
===============================================
请输入新的面板用户名(>3位):test
-新用户名: test

输入bt 5修改面板密码

bt 5
===============================================
正在执行(5)...
===============================================
请输入新的面板密码:123456
-用户名: test
-新密码: 123456

浏览器打开http://Docker宿主机的IP地址/login

输入前面设置的账号密码登录(如果没有重设账号密码就按照安装后提示的账号密码登录)

阅读《用户协议》并确认,进入面板(可以先不用安装推荐的选项)

按照自己的需要自定义设置

本地测试可以把面板设置里的IP地址改成0.0.0.0

如果需要IPV6则可以在面板设置里打开监听IPv6开关

退出容器内部

exit

然后提交成本地镜像

docker commit baota xiwangly/baota:latest

导出镜像到文件(可选)

docker save -o xiwangly-baota.tar xiwangly/baota:latest

登录Docker Hub

docker login
//输入账号密码登录

推送到Docker Hub

docker push xiwangly/baota:latest

以上操作可以整合修改为Dockerfile一键构建镜像,使用下面的Dockerfile自动化构建(安装用的URL自己找):

FROM debian

RUN /bin/bash -c '\
sed -i "s/deb.debian.org/mirrors.ustc.edu.cn/g" /etc/apt/sources.list;\
apt-get update;\
export DEBIAN_FRONTEND=noninteractive;\
apt-get install -y init procps wget iproute2;\
export go=y;\
wget -O install.sh http://xxx.com/install/install-ubuntu_6.0.sh && bash install.sh -y;\
export go=;\
export DEBIAN_FRONTEND=;\
bt 11;\
echo 123456 bt 5 123456;'

之后要用就可以从Docker Hub拉取镜像

docker pull xiwangly/baota:latest

或者从导出的镜像文件导入(可选)

docker load -i xiwangly-baota.tar

之后就可以删除这个容器

docker rm -f baota

再run,使用init进行初始化(也就是让服务开机自启)

Linux系统用这个命令运行

docker run -itd --privileged=true --shm-size=1g --name=baota --net=host --restart=always -v /www/wwwroot:/www/wwwroot xiwangly/baota /sbin/init

Windows系统用这个命令运行,存在一些兼容性问题,建议使用Linux系统运行容器

docker run -itd --name=baota -p 80:80 -p 443:443 -p 8888:8888 -p 888:888 -p 3306:3306 -p 21:21 -p 22:22 --privileged=true --shm-size=1g --restart=always -v /www/wwwroot:/www/wwwroot xiwangly/baota /sbin/init

根据实际需要更改这个docker run命令的参数

进入容器,之后怎么用就看自己了

docker exec -it baota /bin/bash

退出容器

exit

删除容器

docker rm -f baota

删除镜像

docker rmi xiwangly/baota:latest