Docker三分钟颠覆性安装宝塔面板
vps可视化管理的面板中,宝塔面板依托强大的社区支撑,开发力度很很大,因此非常适合lunix系统搭建网站等使用,非常方便。
但是宝塔面板初始安装一般需要一分钟,然后lnmp环境安装需要二十分钟以上,这个漫长的过程现在可以打破了,用docker不到三分钟,就可以完成快速部署。
注意:此法不适合新手小白,新手推荐按原始方法进行操作
优点
Docker容器部署,省略初始化LNMP编译过程
最新版本的宝塔面板+LNMP基础环境(最新版本的官方纯净安装的基础上安装nginx,mysql,php7.3)
可随时管理容器,无需重置服务器。
项目地址:
https://hub.docker.com/r/pch18/baota
1.Docker安装(已安装的可省略此步骤)
curl -sSL https://get.docker.com/ | sh #启动 service docker restart #设置开机自启 systemctl enable docker
2.宝塔面板部署
docker run -tid --name baota -p 80:80 -p 443:443 -p 8888:8888 -p 888:888 -p 20:20 -p 21:21 --privileged=true --restart always -v baota_www:/www -v ~/wwwroot:/www/wwwroot pch18/baota
运行结束就玩了宝塔面板的安装,实际上整个过程也就两分钟左右(实际状况根据服务器决定,并不是绝对的)。
3.执行以下命令
#进入docker宝塔容器 docker exec -it baota bash #关闭安全出口 rm -f /www/server/panel/data/admin_path.pl #重置宝塔面板的登陆账号及密码,后期进入面板后可手动修改 bt default
完成以上步骤,就可以打开iP:8888 进行访问了,正常部署一点问题都没有
备注:该宝塔已安装最新版本,内含LNMP基础环境,php7.3.普通搭建已经非常齐全了。
4.已知问题
4.1.部分机器初始化环境可能某些端口被占用,比如80端口被占用,使用netstat -lnp|grep 80 查看进程PID,然后使用kill -9 XXXX结束该进程 (xxxx为进程的相关pid)。
之后再重复以上命令即可
4.2.如果想增加端口,就需要docker commit该映像,然后重新运行该新的映像,并在-v参数添加相应的端口即可。
4.3.鉴于docker的诸多优秀特质,所以本站演示站点为保证原始环境,所以均采用此法进行操作的。使用基本无差别,所以推荐用此法部署宝塔。
5.其他版本及问题说明
#删除baota容器 docker stop rm -f baota
通过host模式运行宝塔镜像(该方法所有端口都启用,类似常规安装宝塔)
但是host模式很容易启动失败,因此我们以前面演示的命令为准。
docker run -tid --name baota --net=host --privileged=true --restart always -v baota_www:/www -v ~/wwwroot:/www/wwwroot pch18/baota
6.版本命名说明
pch18/baota:latest 或 pch18/baota 为最新版本的官方纯净安装的基础上安装nginx,mysql,php pch18/baota:init 为引导镜像,用于自启动服务,持久化程序文件,其他版本均基于此镜像生成 pch18/baota:clear 为官方版本纯净安装, 不默认安装nginx,mysql,php等程序 pch18/baota:lnp 为官方版本纯净安装的基础上安装nginx,php(不内置mysql,用于外置数据库的环境) pch18/baota:lnmp 为官方版本纯净安装的基础上安装nginx,mysql,php pch18/baota:lap 为官方版本纯净安装的基础上安装apache,php(不内置mysql,用于外置数据库的环境) pch18/baota:lamp 为官方版本纯净安装的基础上安装apache,php
7.总结
面板无法进入,密码,用户名错误等状况,需要进入docker容器,参考3.执行以下命令,执行宝塔面板控制命令
bt
按照以上方式进行相关操作
原文地址:https://www.cnblogs.com/shenjingwa/p/14437598.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- VirtualBox 错误:This kernel requires the following features not present on the CPU
- SQL注入原理与解决方法代码示例
- Android开发中自定义ProgressBar控件的方法示例
- Angular.js实现获取验证码倒计时60秒按钮的简单方法
- cemtos 7 linux 安装与卸载 tomcat 7的教程
- Ubuntu安装Jupyter Notebook教程
- vue实现手机号码抽奖上下滚动动画示例
- Centos7安装配置NFS服务和挂载教程(推荐)
- JS跳转手机站url的若干注意事项
- 详解Js中的模块化是如何实现的
- 基于Listener监听器生命周期(详解)
- React Native学习教程之自定义NavigationBar详解
- PHP二维关联数组的遍历方式(实例讲解)
- Android开发实现自定义水平滚动的容器示例
- 详解mysql中的冗余和重复索引