前言
使用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.bak
vim /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
转载时须注明出处及本声明。