最近虚拟化领域Docker炒的沸沸扬扬,一时间不晓得它到底是个什么鬼~ 查阅许久,稍微明白了点:
1,Docker是一种应用虚拟化技术,它是基于Linux内核提供的LXC技术实现的,而传统的虚拟化技术是基于CPU虚拟化的(当然,还有KVM等应用软件虚拟化,这里不讨论)。CPU虚拟化是硬件提供的一种功能,在RING0下引入了RING-1。因此它对于主流OS都是透明的;而Docker是基于Linux内核的LXC技术,这也注定了它上面只能跑Linux的虚拟机,而且跑在上面的虚拟机看到的内核都是宿主的内核。这就是本质区别,具体点:
1.1 CPU虚拟化下的虚拟机,每一个虚拟机完全独立,彼此不受影响。
1.2 Docker下的虚拟机,基于LXC技术,和宿主机共用一个内核(不信?在虚拟机下和宿主机下运行下uname -a就知道了);虚拟机的一个进程直接映射到宿主机的一个进程(在虚拟机下和宿主机下都ps -a试下吧)。但每一个虚拟机看不到其他虚拟机及宿主机的进程,但宿主机可以看到所有虚拟机的进程,而且和自身进程一一对应。这就是Docker效率高的原因之一。
看透了这点基本上就搞明白Docker是个什么鬼了,可惜我在度娘上折腾了半天,愣是没有一个人说明白的,亏我悟性好~
2,Docker是一种更轻量级的虚拟化技术,但它暂时还取代不了CPU虚拟化技术,人家的优势在:
2.1 虚拟机隔离,安全
2.2 OS透明,虚拟机的系统可以是linux、windows,啥都行,Docker只支持linux。不要告诉我windows也支持Docker了,它只是装了linux虚拟机,然后在这个虚拟机上运行docker,再虚拟些docker容器。包了个壳,扯淡的技术。
3,Docker配套的工具还不是很成熟,基本上全得命令行干活。我一开始在想:虚拟机的文件存在那?怎么获取客户机IP地址?怎样远程获取终端?使用图形界面怎么办(如,安装Oracle)?摸索了一番,基本解决。下面说说我在Ubuntu 14.04.3 上折腾的经历:
3.1 安装docker: apt-get install docker.io
3.2 启动docker服务: service docker.io restart
3.3 下载镜像:docker pull centos:6
3.4 启动容器:docker run -i -t centos:6 /bin/bash
此时会进入bash终端,但不是运行在root用户下,建议立即su,否则有时你会很纠结,比如后面安装vncserver时~
如果su报错,多半是内核版本问题。亲测:3.13.0-62的内核是行的,但3.19.0-26的内部不行
3.5 安装ssh:yum install openssh-server
service sshd restart
3.6 关闭防火墙:service iptables stop
3.7 文件存在哪:这个网上说的到挺清晰的,AuFS,基本的镜像文件,加容器修改的内容单独保存的文件,层次结构,就像CAD的图层一样。。。
3.8 网络信息:宿主机下ifconfig,可看到docker0虚拟网卡,所有的虚拟机都接在它上面,由他分配ip地址;虚拟机下ifconfig,可看到自己的eth0网卡。如果你需要在其他电脑上访问虚拟机,则需要增加一条路由规则,将所有访问docker0子网下的请求都路由到宿主机的eth0地址上。我是修改的路由器,增加了静态路由;也可以修改需要访问电脑的路由表,只是麻烦些。
3.9 图形界面咋搞定:这个说实话,比较纠结,资料也少,我悟性这么高的人,也折腾了一上午。总的思路是先安装图形包,然后通过vnc访问图形界面:
yum groupinstall "Desktop"
yum groupinstall "X Window System"
yum groupinstall "Chinese Support"
yum install tigervnc-server
vi /etc/sysconfig/vncservers,增加:
VNCSERVERS="1:root" --指定远程用户
VNCSERVERARGS[1]="-geometry 1024x768" --指定远程桌面分辨率
vncpasswd (注意,此时一定要在root用户下执行,不放心还是su一下吧,docker容器里who没反应)
vi ~/.vnc/xstartup,修改:
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & --将它注释,加#代表注释
#twm & --将它注释
gnome-session & --添加它
service vncserver restart
好了,可以通过vnc客户端IP:1访问图形界面了。
Docker基本命令参考:http://www.tuicool.com/articles/7V7vYn
CentOS安装VNC参考:http://blog.csdn.net/Matrix_Designer/article/details/7604872、http://blog.itpub.net/666724/viewspace-1058843/