前言
使用docker安装宝塔的优势:
- 环境隔离,一个主机可以部署多套服务
- 宝塔对主机控制度较高,依赖关系复杂,而docker可以保证宝塔服务不影响到宿主机其他服务,木马等同理。
- 宝塔分为
linux版和windows版,而windows版本并不是非常完善,我们可以使用docker在windows上构建linux版的宝塔。
使用docker安装宝塔
拉取纯净的ubuntu镜像
docker pull ubuntu
启动容器,并配置容器参数
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
参数说明:
容器开机自启
–restart=always
映射宝塔主要需要的端口,也可以自己添加如3306等端口-p 80:80 -p 443:443 -p 888:888 -p 8888:8888
映射本地的/home/www作为容器的/www目录-v /home/www:/www*
端口冲突了,删除错误的容器并修改端口重新run一下:


进入容器,并安装宝塔
进入容器:
docker attach baota安装宝塔:
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec然后会报错说没有wget、sudo命令:

apt-get install wget校园网环境下访问不了ubuntu镜像源,考虑更换为阿里源:
cp /etc/apt/sources.list /etc/apt/sources.list.bakvim /etc/apt/sources.list但是!这系统也太太太精简了!!连vi、vim都没有!

就在此时,留意到了网上有大佬巧用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下载wget、sudo后再次执行安装宝塔命令,完美解决问题!

宿主机防火墙开放8888端口:
ufw allow 8888/tcp
成功访问:


可以看到,在未加特殊限制的情况下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)
版权属于:soarli
本文链接:https://blog.soarli.top/archives/668.html
转载时须注明出处及本声明。