5s!用浏览器打造一个开箱即用的Linux系统
做为Linux系统管理员、或者是系统运维工程师,肯定会在工作遇到这样的需求:需要开发环境、测试环境、准生产环境等等环境,有时候建一个环境费时间不说,还容易出各种错误,好不容易建好了,可能还用不了几天。如果这时候有一个工具:能即用即建,不用则删,随时随地去创建一个系统多好!
所以,今天民工哥给大家推荐一个开源项目:Instantbox,为大家来解决这个烦恼。
什么是Instantbox?
使用Instantbox可以让你随时随地构建一个系统,开箱即用,不用登录服务器;任何地方都可以登录,只要一个浏览器就可以随时访问。几秒钟快速搭建一个开箱即用的临时Linux系统。
这是一个通过任何浏览器即时访问webshell来激活临时Linux系统的项目。
项目地址:https://github.com/instantbox/instantbox
Instantbox功能
- 为演示文稿提供干净的Linux环境
- 让学生在您的学校或您的下一次LUG见面会上体验Linux的魅力
- 在干净的环境中灵感奔跑
- 从任何设备管理服务器
- 试验一个开源项目
- 在资源限制下测试软件性能
Instantbox支持的发行版
目前支持Ubuntu,CentOS,Arch Linux,Debian,Fedora和Alpine的各种版本。
安装部署
1、安装Docker
[root@centos7 ~]# yum install docker -y
[root@centos7 ~]# systemctl start docker
关于Docker的安装之前也有旧文:Docker容器技术入门(一)有介绍过。
2、安装instantbox
[root@centos7 ~]# mkdir instantbox && cd $_
[root@centos7 instantbox]# bash <(curl -sSL https://raw.githubusercontent.com/instantbox/instantbox/master/init.sh)
Welcome to instantbox, please wait...
docker is installed
Enter your IP (optional):
192.168.1.8
Choose a port (default: 8888):
6666
You're all set!
Run 'docker-compose up -d' then go to http://192.168.1.8:6666 on your browser.
注:安装期间需要你输入端口等相关信息,按提示输入即可。
3、启动过程
[root@CentOS instantbox]# docker-compose up -d
Unable to find image 'docker/compose:1.25.1' locally
Trying to pull repository docker.io/docker/compose ...
1.25.1: Pulling from docker.io/docker/compose
050382585609: Pull complete
-----------省略一些拉取镜像的过程
Status: Downloaded newer image for docker.io/instantbox/cron:latest
Creating instantbox_server ... done
Creating instantbox_frontend ... done
Creating instantbox_cron ... done
4、浏览器访问
使用Server_ip+port的形式来访问
下面是选择你要创建的系统版本
我这里选择的是CentOS7,直接点下一步即可。
输入信息,这里的端口是你浏览器访问创建的新系统的端口,点击Create直接创建。
会有一个提示,点继续即可。
会有一段时间的等待,上图上也可以看出默认创建的系统有效期是24小时。
直接可以打开webshell界面了
其实,这个项目实际就是把docker容器的创建流程图形化、自动化了,让你只需点点鼠标就可以完成了。所以你在第一次创建某个系统版本时会需要耗费一些时间,第二次创建时就很快了,因为第一次需要去拉取镜像文件。
是不是很神奇?是不是很好用?是不是很流弊?最后如果你不想用了,直接删除,想用了直接创建,太方便了。
这里肯定有人要问了,光装个系统有个球用?也得系统里跑应用,外部能访问吧,不然这个系统有啥用?确实,所以,民工哥给大家演示一下,如何访问内部的应用?以安装httpd服务为例。
#安装httpd服务
[root@instantbox_managed_mcsak3ltv0j2pe9f /]# yum install httpd -y
#启动httpd服务并检查
[root@instantbox_managed_mcsak3ltv0j2pe9f conf]# httpd
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.18. Set the 'ServerName' directive globally to suppress this message
[root@instantbox_managed_mcsak3ltv0j2pe9f conf]# ps -ef|grep httpd
root 107 1 0 09:28 ? 00:00:00 httpd
apache 108 107 0 09:28 ? 00:00:00 httpd
apache 109 107 0 09:28 ? 00:00:00 httpd
apache 110 107 0 09:28 ? 00:00:00 httpd
apache 111 107 0 09:28 ? 00:00:00 httpd
apache 112 107 0 09:28 ? 00:00:00 httpd
root 114 7 0 09:28 pts/0 00:00:00 grep --color=auto httpd
从上创建的时候知道这个创建的系统外部端口的是32786,那么下面我们就用32786这个端口进行访问,看看能不能访问到刚刚安装并启动完成的Apache服务?
修改默认首页内容试一试
[root@instantbox_managed_mcsak3ltv0j2pe9f html]# echo "Welcome to here">>index.html
[root@instantbox_managed_mcsak3ltv0j2pe9f html]# ll
total 4
-rw-r--r-- 1 root root 16 Mar 23 10:02 index.html
[root@instantbox_managed_mcsak3ltv0j2pe9f html]# cat index.html
Welcome to here
好了,民工哥今天的分享就到这里了,如果此文对你有所帮助,请动手点个「在看」与「转发」分享支持一下,你的支持是民工哥创作的最大动力,感谢大家的阅读、在看与转发支持。
- 使用Swagger2Markup实现API文档的静态部署(二):Markdown和Confluence
- Dubbo官方的Starter发布1.0.0测试版,与Spring Boot的结合将更加自然
- spring-boot-starter-swagger 1.2.0.RELEASE:新增分组配置功能
- 领域驱动设计
- Spring Boot中使用JavaMailSender发送邮件
- Spring Boot的应用限流
- Spring Cloud构建微服务架构:服务网关(过滤器)【Dalston版】
- 虚拟机类加载机制
- 深入理解JVM垃圾收集机制(JDK1.8)
- 你真的懂let和const吗?
- MYSQL GTID使用运维介绍
- MongoDB系列一(查询).
- Angular CLI 简介
- 编程思想 之「接口、内部类」
- 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 数组属性和方法
- SAP Spartacus里的StorefrontConfig静态类型
- SAP Spartacus B2cStorefrontModule.withConfig的实现
- SAP Spartacus 页面元数据
- leetcode-easy-array-合并两个有序数组
- django配置mysql数据库
- Spring整合WebSocket
- Linux 命令(138)—— nc 命令
- # 全网最细 | 21张图带你领略集合的线程不安全
- grafana踩坑记录
- TensorFlow函数:tf.image.crop_to_bounding_box
- tf.newaxis
- tf.random_normal_initializer:TensorFlow初始化器
- 使括号有效的最少添加
- 设计模式~观察者模式
- 网页无插件视频流媒体播放器EasyPlayerPro-IOS版如何解决有声音无画面的问题?