记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

制作基于Debian的宝塔Docker镜像

制作基于Debian的宝塔Docker镜像

作者Docker镜像:https://hub.docker.com/r/xiwangly/baota
容器基础环境搭建:
XML/HTML代码
  1. #拉取Debian镜像
  2. docker pull debian
  3. #运行Debian
  4. docker run -itd --privileged=true --shm-size=1g --name=baota --net=host --restart=always -v /www/wwwroot:/www/wwwroot debian
  5. #进入容器内部
  6. docker exec -it baota /bin/bash
  7. #替换镜像源(有良好的国际互联网连接则可以不用)&更新源
  8. sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && apt-get update
  9. #设置临时环境变量,用于静态交互
  10. export DEBIAN_FRONTEND=noninteractive
  11. #安装软件包,如果不使用curl安装宝塔面板则可以不安装curl,wget同理,其它的软件包真的用不到也可以不安装
  12. apt-get install -y init procps wget iproute2
  13. //apt-get install -y curl
安装宝塔面板(命令二选一):
宝塔开心版出自:https://bt.sy/   宝塔官网:https://www.bt.cn/
XML/HTML代码
  1. #试验性Centos/Ubuntu/Debian安装命令 独立运行环境(py3.7)可能存在少量兼容性问题
  2. curl -sSO http://io.bt.sy/install/install_panel.sh && bash install_panel.sh
  3. #Debian安装命令:
  4. wget -O install.sh http://io.bt.sy/install/install-ubuntu_6.0.sh && bash install.sh
官方安装脚本:
XML/HTML代码
  1. wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh
询问是否安装,回复y继续,中途可能会遇到报错,自行解决。
安装完成后,输入bt可查看命令,如果输入了这个就直接交互数字就行了。
XML/HTML代码
  1. ===============宝塔面板命令行==================  
  2. (1) 重启面板服务           (8) 改面板端口  
  3. (2) 停止面板服务           (9) 清除面板缓存  
  4. (3) 启动面板服务           (10) 清除登录限制  
  5. (4) 重载面板服务           (11) 取消入口限制  
  6. (5) 修改面板密码           (12) 取消域名绑定限制  
  7. (6) 修改面板用户名         (13) 取消IP访问限制  
  8. (7) 强制修改MySQL密码      (14) 查看面板默认信息  
  9. (22) 显示面板错误日志      (15) 清理系统垃圾  
  10. (23) 关闭BasicAuth认证     (16) 修复面板(检查错误并更新面板文件到最新版)  
  11. (24) 关闭动态口令认证          (17) 设置日志切割是否压缩  
  12. (25) 设置是否保存文件历史副本  (18) 设置是否自动备份面板  
  13. (0) 取消                   (29) 取消访问设置验证  
  14. ===============================================  
  15. 请输入命令编号:  
  16. ===============================================  
输入bt 11取消入口限制,输入bt 6修改面板用户名,输入bt 5修改面板密码,然后按照提示浏览器登录宝塔即可。
高级设置:
输入前面设置的账号密码登录(如果没有重设账号密码就按照安装后提示的账号密码登录)
阅读《用户协议》并确认,进入面板(可以先不用安装推荐的选项)
按照自己的需要自定义设置
本地测试可以把面板设置里的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自己找):
XML/HTML代码
  1. FROM debian
  2.  
  3. RUN /bin/bash -c '\
  4. sed -i "s/deb.debian.org/mirrors.ustc.edu.cn/g" /etc/apt/sources.list;\
  5. apt-get update;\
  6. export DEBIAN_FRONTEND=noninteractive;\
  7. apt-get install -y init procps wget iproute2;\
  8. export go=y;\
  9. wget -O install.sh http://xxx.com/install/install-ubuntu_6.0.sh && bash install.sh -y;\
  10. export go=;\
  11. export DEBIAN_FRONTEND=;\
  12. bt 11;\
  13. 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系统用这个命令运行
XML/HTML代码
  1. 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系统运行容器
XML/HTML代码
  1. 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
其他Docker宝塔镜像:
此docker镜像由堡塔安全官方发布,镜像版本为宝塔面板8.0.5正式版,镜像会随着正式版的宝塔面板更新 目前支持x86_64和arm架构可供下载使用(官方原版同步)
注意:部署完成后,请立即登录宝塔面板--->面板设置中修改用户名和密码并修改安全入口
latest 标签拉取的是lib标签,安装了面板并且安装集成依赖包,安装每个软件都会快一点。
fresh 标签表示安装了面板但是没有安装集成依赖包,安装第一个软件会比较慢,因为需要装依赖包。
lib标签表示安装了面板并且安装集成依赖包,安装每个软件都会快一点。
lnmp 标签表示安装了面板、集成包并且集成LNMP【Nginx1.24+MySQL8.0+PHP8.2】
7.9.4的lnmp 标签表示安装了面板、集成包并且集成LNMP【Nginx1.22+MySQL5.7+PHP7.4】arm标签是MySQL5.6
lamp 标签表示安装了面板、集成包并且集成LAMP【Apache2.4+MySQL8.0+PHP8.2】
7.9.4的lamp 标签表示安装了面板、集成包并且集成LAMP【Apache2.4+MySQL5.7+PHP7.4】arm标签是MySQL5.6
如何拉取镜像
仅拉取镜像保存到本地,不部署容器,仅需拉取一次,永久存储到本地镜像列表
docker pull btpanel/baota:lnmp
7.9.4旧镜像拉取方式
docker pull btpanel/baota:7.9.4-lnmp
小贴士:即使不拉取镜像,在下面部署的时候如果docker本地镜像列表找不到镜像,docker会从云镜像库里面拉取,只要执行一次之后镜像就会永久存储到本地镜像列表中。
疑问?:我是arm服务器arch64架构怎么办?
答疑!:直接拉取镜像即可,docker默认会根据系统架构自动拉取匹配架构的镜像到本地。
如何部署
方法1:复制下方的命令,无需映射端口使用本地网络直接部署宝塔面板docker镜像。
XML/HTML代码
  1. docker run -d --restart unless-stopped --name baota --net=host -v ~/website_data:/www/wwwroot -v ~/mysql_data:/www/server/data -v ~/vhost:/www/server/panel/vhost btpanel/baota:lnmp
方法2:复制下方的命令,映射指定端口部署宝塔面板docker镜像。
XML/HTML代码
  1. docker run -d --restart unless-stopped --name baota -p 8888:8888 -p 22:22 -p 443:443 -p 80:80 -p 888:888 -v ~/website_data:/www/wwwroot -v ~/mysql_data:/www/server/data -v ~/vhost:/www/server/panel/vhost btpanel/baota:lnmp
两种部署方法都会把用户的目录映射到容器中,用户可自行修改映射的目录,方法1案例以如下:
~/website_data修改成/home/website_data
~/mysql_data修改成/home/mysql_data
~/vhost修改成/home/vhost
此时我的容器启动命令就是这个
XML/HTML代码
  1. docker run -d --restart unless-stopped --name baota --net=host -v /home/website_data:/www/wwwroot -v /home/mysql_data:/www/server/data -v /home/vhost:/www/server/panel/vhost btpanel/baota:lnmp
小提示
1.如果你希望运行的docker在你设置了内容以后,再commit打包成自己的镜像留着日后使用,请不要映射目录运行容器,可以使用下面的方法运行容器,这样打包容器就能将你的网站内容、各种设置、数据库一起打包在里面
docker run -d --net=host btpanel/baota:lnmp
2.额外参数作用简要说明:
#重启docker后自启容器
--restart unless-stopped
#命名改容器命为baota,如果已经存在一个请设置成其他
--name baota
如何访问
现在,您可以在浏览器访问默认地址 http://您的ip地址:8888/btpanel 上的宝塔面板。
默认用户:btpanel
默认密码:btpaneldocker
镜像默认SSH密码:btpaneldocker
无法访问?
请检查系统防火墙以及服务器商家安全组是否开放了8888端口,下面给出系统防火墙firewalld(必需)的开放方法
添加8888端口放行(必需):
firewall-cmd --zone=public --remove-port=8888/tcp --permanent
重载firewalld(必需):
firewall-cmd --reload
端口使用分析
SSH:22
MySQL:3306
网站服务:80,443
宝塔面板:8888
phpmyadmin:888
目录使用分析
容器里面的网站数据目录:/www/wwwroot
MySQL数据目录:/www/server/data
vhost文件路径:/www/server/panel/vhost
使用有任何问题或者建议,欢迎广大用户在此贴提交,您宝贵的建议会让我们有更大的动力
相关学*教程参考:
https://www.runoob.com/docker/docker-command-manual.html
Docker 官方文档: https://docs.docker.com/
常见问题和解决方法
1.计划任务不自动执行的解决方法
进入容器内
docker exec -it ID bash
然后执行下面的命令重启激活计划任务程序,再删掉面板添加的计划任务重新添加一遍就可以了
pkill crond && /sbin/crond
2.数据库页面提示密码错误的解决方法在数据库页面点击root密码,重置MySQL密码即可
3.fresh、lib标签安装软件后无法自启动的解决方法;根目录下有个bt.sh的文件,添加下面的内容即可,php记得换成自己的版本,如果是apache将nginx换成httpd;其他软件需要自启也同样加内容到这个bt.sh脚本里面。
XML/HTML代码
  1. /etc/init.d/nginx start
  2. /etc/init.d/mysqld start
  3. /etc/init.d/php-fpm-74 start
  4. /etc/init.d/pure-ftpd start
  5. /etc/init.d/bt restart
  6. pkill crond
  7. /sbin/crond
  8. tail -f /dev/null
具体使用根据自己实际情况修改。
尽可能使用编译安装,否则容易出问题。
注:如果启动nginx的时候报这个错误:error while loading shared libraries: libgd.so.2: cannot open shared object,是因为缺失gd库,把他装上就可以了。
使用yum安装程序会出现错误,是因为默认的源有问题,可以更换源后再安装。(centos系统)
XML/HTML代码
  1. #更换源
  2. bash <(curl -sSL https://linuxmirrors.cn/main.sh)  
  3. #安装gd库
  4. yum install gd  
如果yum搜索不到gd库的安装包,可以手动下载对应rpm包,下载地址:http://rpmfind.net/linux/rpm2html/search.php?query=libgd.so.2下载完了之后安装即可。安装完成之后,再启动nginx正常。

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):