zoukankan      html  css  js  c++  java
  • Docker初探

    近期虚拟化领域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

              好了,能够通过vncclientIP: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/

  • 相关阅读:
    精通CSS高级Web解决方案(第2版)——读书笔记
    MySQL的知识点总结(一)
    json深拷贝
    Typescript 从Array 继承时碰到的问题
    webpack 笔记
    JavaScript 高效代码
    编写更优雅的 JavaScript 代码
    JavaScript复杂判断优雅写法
    深入浅出Javascript事件循环机制
    关于面向对象封装的思考--持续更新
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6934943.html
Copyright © 2011-2022 走看看