soarli

基于Docker安装宝塔面板
前言使用docker安装宝塔的优势:环境隔离,一个主机可以部署多套服务宝塔对主机控制度较高,依赖关系复杂,而doc...
扫描右侧二维码阅读全文
22
2022/10

基于Docker安装宝塔面板

前言

使用docker安装宝塔的优势:

  • 环境隔离,一个主机可以部署多套服务
  • 宝塔对主机控制度较高,依赖关系复杂,而docker可以保证宝塔服务不影响到宿主机其他服务,木马等同理。
  • 宝塔分为linux版和windows版,而windows版本并不是非常完善,我们可以使用dockerwindows上构建linux版的宝塔。

使用docker安装宝塔

拉取纯净的ubuntu镜像

docker pull ubuntu

image-20221022201222467

启动容器,并配置容器参数

docker run -i -t -d --restart=always --name baota -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 --privileged=true -v /home/wwwu:/wwwu ubuntu

image-20221022201321210

参数说明:

容器开机自启
–restart=always
映射宝塔主要需要的端口,也可以自己添加如3306等端口
-p 80:80 -p 443:443 -p 888:888 -p 8888:8888
映射本地的/home/www作为容器的/www目录
-v /home/www:/www*

端口冲突了,删除错误的容器并修改端口重新run一下:

image-20221022201937559

image-20221022201902338

进入容器,并安装宝塔

进入容器:

docker attach baota

安装宝塔:

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec

然后会报错说没有wgetsudo命令:

image-20221022204958854

apt-get install wget

校园网环境下访问不了ubuntu镜像源,考虑更换为阿里源:

cp /etc/apt/sources.list /etc/apt/sources.list.bak
vim /etc/apt/sources.list

但是!这系统也太太太精简了!!连vivim都没有!

image-20221022205113708

就在此时,留意到了网上有大佬巧用echo命令实现了文本添加,跟着构造了一个脚本!666!

echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" > sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >> sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >> sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >> sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" >> sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >> sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >> sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >> sources.list

随后更新一下软件包:

apt-get update

下载wgetsudo后再次执行安装宝塔命令,完美解决问题!

image-20221022204813949

宿主机防火墙开放8888端口:

ufw allow 8888/tcp

image-20221022211947460

成功访问:

image-20221022212051916

image-20221022212138294

可以看到,在未加特殊限制的情况下docker容器可以共享式使用宿主机的全部资源的!

配置宝塔自启动

安装完后有一个问题,容器虽然自启动了,但是宝塔的服务并不会随容器的启动而启动。

我们需要在宿主机的开机脚本中配置容器开机自动执行启动宝塔的服务。

创建脚本

vi /home/user/startBotSh.sh

sleep 30;sudo docker exec f81b5e657eb6 /etc/init.d/bt start && sudo docker exec f81b5e657eb6 /etc/init.d/nginx start && sudo docker exec f81b5e657eb6 /etc/init.d/php-fpm-56 start && sudo docker exec f81b5e657eb6 /etc/init.d/mysqld start

**参数说明:

sleep 30; 等待docker启动后再执行

sudo docker exec f81b5e657eb6 /etc/init.d/bt start 启动宝塔服务

sudo docker exec f81b5e657eb6 /etc/init.d/nginx start 启动nginx服务

sudo docker exec f81b5e657eb6 /etc/init.d/php-fpm-56 start 启动php服务

sudo docker exec f81b5e657eb6 /etc/init.d/mysqld start 启动php服务

其中 f81b5e657eb6 需要换成自己的容器id

启动php服务需要查看自己使用的php版本

更多命令可以使用 ls /etc/init.d/ 查看

使用:wq保存

挂载开机自启脚本

使用命令:crontab -e

添加新的一行

@reboot sudo bash /home/user/startBotSh.sh

使用:wq保存后即配置完成,可以重启后查看是否配置成功

设置启动时自动备份容器

虽然宝塔本身提供了比较完善的备份功能,但是有了docker我们可以轻易地将整个运行环境包含其内容备份,即使到其他主机上可以直接使用。

1.更改启动脚本

vi /home/user/startBotSh.sh

2.在sleep 30;后面添加内容

sudo docker rmi btsitebackup && sudo docker commit f81b5e657eb6 btsitebackup &&

注意:

f81b5e657eb6改为自己的容器id

有需要的也可以使用推到docker线上仓库,在每次开机时push(需要考虑安全性)

参考资料:

使用docker安装宝塔,并解决宝塔服务在docker下开机自启动... - Linux面板 - 宝塔面板论坛 (bt.cn)

我的ubuntu连vi都没有??那在命令行怎么编辑文件?? - 知乎 (zhihu.com)

echo 追加至文件_路明子正的博客-CSDN博客_echo 追加

群晖docker安装宝塔面板并启用独立内网ip - TechBlog (gitloc.com)

最后修改:2022 年 11 月 21 日 07 : 19 PM

发表评论