在大学时期,我们上第一节操作系统课程的时候,老师就给我们讲,操作系统到底要干什么?这个问题想讲清楚说容易,也不容易。在操作系统发展的不同时期,它所完成的功能是不大一样的,单道程序,多道程序,批处理程序,网络操作系统,多用户操作系统,开源操作系统,闭源操作系统,分布式操作系统,分时操作系统,实时操作系统等等,划分的角度不同,划分的结果就不同。这么多的划分,操作系统要干什么呢?老师说:“很简单,就是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。”。概念的东西,需要细细的体会。云计算的今天,我们再来验证下:
- 管理计算机硬件资源——内核(比如linux内核)
- 控制其他程序运行——比如RancherOS的System Docker
- 其他程序——Docker封装的各种程序(这个不算是严格意义上操作系统的东西,但是现在看来界限在模糊)
- 用户提供交互操作界面——Android、IOS、VR虚拟现实等等
只不过现在分的更为详细了,每个划分只做好它本身,我还清楚的记得工程院院士倪光南的那句话,以后的操作系统就分两种,一种是专注于在各种屏幕上呈现声音画面的,另一种就是专注于处理服务数据的,这就是以后操作系统发展的趋势。慢慢的我们就看不清楚原来定义的界限了,它们在分化中融合!
下面我们来说说RancherOS:
RancherOS,目标是成为一个运行Docker容器的最小linux发行版,体积只有30M左右,精简的很不错,RancherOS中Docker守护进程是最先加载的进程,PID为1,内核启动的第一个进程,这个Docker实例称之为“System Docker”,它的工作就是初始化系统服务,所有的进程、服务等等都是通过一个个Docker实例来完成的,System Docker类似于其它linux发行版中Systemd比如ArchLinux。
其实RancherOS技术并不是多么厉害,很多linux发行版都很小,但是它的思想,它的观念是厉害的。说到这里不得不提CoreOS,CoreOS的目标也是为了运行Docker,但是RancherOS要比CoreOS的设计思想更进一步。RancherOS最初希望能直接在Linux Kernel上运行Docker,把所有用户空间Linux服务分发为Docker容器。这使得部署一个服务变得相当简单,对于运维人员来说,需要就拿来,不需要就去掉,招之即来挥之即去。
下面介绍一下我安装RancherOS的笔记和心得体会吧。RancherOS的官网:RancherOS,以及官方文档:http://docs.rancher.com/os/,作为参考吧。
安装前准备,当然就是下载RancherOS的ISO镜像文件了:rancheros.iso,我用的版本是v0.4.4-rc2,RancherOS的安装其实比CoreOS安装简单的许多了,因为它的网站没有被墙~~~~呵呵。不过还是建议在实体机环境里搭建一个web服务器,方便传输cloud-config.yml配置文件,至于创建web服务器在我上一篇的博客里面有写到,请参考CoreOS安装。
下面就正式开始了,老规矩,VirtualBox配置:至少1G内存,硬盘5G足够使用,CPU看个人电脑配置情况,网络模式改成桥接网卡,EFI启动不要勾选。
加载并启动RancherOS的ISO,启动后用户名密码都是rancher,现阶段在rancher的cloud-config.yml配置文件中不支持添加用户,默认用户就只有rancher,这点和CoreOS是不一样的。首先先让我们的这个ISO系统能上网:
如果你所在的网络有DHCP服务器,由于RancherOS默认是打开DHCP客户端Docker进程的,所以是能自动获取IP地址的,所以就不用配置下面的静态IP了。
#先查看自己网络设备名称 ip link #添加IP,注意将IP和eth0换成自己的 sudo ip addr add 192.168.0.2/24 dev eth0 #添加默认网关,注意将IP换成自己的 sudo route add default gw 192.168.0.254 #添加DNS,注意将IP换成自己的 sudo vi /etc/resolv.conf #打开resolv.conf文件后添加 nameserver 192.168.0.1 #保存退出
可以ping一下外网确认能不能使用。
好的,继续。
下面就是rancheros中下载cloud-config.yml配置文件了:
#注意将IP换成实体机IP wget #用vi查看下 vi cloud-config.yml #cloud-config ssh_authorized_keys: - ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0V4tVnpf2aHyrdp6Dsw7HKc+nkoWFIfZBvcvrjGOx31Scm/z+sYOEn/21R4tkBPrUKMVvg/o2tdWJ1uEZKgaAj+7gygyNRDhOJh4rnRdYhII27HK9QGAUHlTI8GJMigMmhK63yL2euWc18fc6bN6zr2sgZpolOB2GzJeCORYKDk3/bCv6FwUfSeBEWJOQqtTdnhfrT9VmILmZkQcRogq+g2fJfrgn2F/YxlPMcAYQ0Xp9O3BVNC5MF1x59hpa/YQScm2riqw+3eFTinuVJDTH65y1SxrDMnqHtspq48m1GD/M9F6peSSLoRAW96q5l0h2hGIbvu8Kt9iYmxMFfWeYw== hostname: rancheros1 rancher: network: interfaces: eth0: address: 192.168.0.102/24 gateway: 192.168.0.1 mtu: 1500 dhcp: false dns: nameservers: - 192.168.0.1
注意:所有的cloud-config配置文件里面的TAB键是不能被识别的,所以,切记缩进的时候一定使用空格键。另外windows中的换行符与linux、mac中的换行符是不一样的,所以使用windows建立这个文件的需要处理下换行符,使之变为linux、mac匹配的。
注意将上面配置文件中的IP地址DNS还有ssh公钥都换成是自己的,windows客户端可以使用putty或者xshell生成ssh,linux或者mac客户端直接在命令行中使用ssh-keygen命令生成。上面的配置默认不开启DHCP。
安装之后的配置文件在/var/lib/rancher/conf/目录下。关于更详细的cloud-config.yml配置文件讲解请参考:Rancher Documentation。
好的,继续。
下面进行安装:
#安装RancherOS命令 sudo ros install -c cloud-config.yml -d /dev/sda #提示是否继续,确认y y #有时候网络会不太稳定,多试几次安装 #成功之后提示是否重启,不重启N N #然后关机 sudo poweroff
关机之后,移除光驱,再次启动rancheros,开机如果失败,请检查配置文件。重要的事情说三遍:开机如果失败,请检查配置文件。开机如果失败,请检查配置文件。开机如果失败,请检查配置文件。请留意失败的提示,可以在虚拟机中开个录屏,以便回放,找到出错信息,有类似这样的提示row 11,col 1,这就说明你配置文件第11行第1列有问题。
成功之后就可以使用ssh登录了,安装之后的rancheros是不能使用rancher用户本机登录的,推荐使用ssh登陆用户名还是rancher。