首先,我们将传统的虚拟化和容器架构相比较,如下:
虚拟化分类:
-
主机级虚拟化:
Type-I:直接在硬件平台上面张一个虚拟机管理器(hypivisor),然后在hypvisiror上面安装虚拟机
Tyoe-II:在硬件宿主机上面安装操作系统,然后安装hypirvisiror,然后在hypvisiror上面安装虚拟机
需要隔离的资源:UTS(主机机域名,k可以以名称空间为单位隔离),Mount(文件系统),IPC,PID(进程),User,Net,这六种资源可以通过linux内核中的namespace来隔离:
-
容器级虚拟化:
-
Cgroups:资源限制
-
LXC(linux container)
门槛:学会LXC工具,还要定制template,批量创建容器不容易,
好处:可以让每个用户空间进程使用宿主机,相比虚拟机,中间减少了不必要的开销。
于是,后来出现了docker,严格来说docker是LXC的增强版,或者叫二次封装发行版。 -
Docker与LXC解决了:
① 创建容器时,不用之前LXC的template技术,而是用镜像技术,将所需要的一些资源打包成镜像,然后用镜像起容器,类似于kvm技术;
②docker是一个容器里面就运行一个进程,而LXC是把一个容器当用户空间,里面可以运行多个进程;
③docker容器技术的出现,大大降低了软件开发的难度,是研发人员的福音,但却是运维人员的噩梦。 -
Docker
每个image都是read-only,所以,最底下的base镜像可以被多个容器共享的;
Docker 编排工具:
Swarm + compose :docker 公司自己的,swarm是多集群,compose是单机的;
Mesos+marathon:
K8s:目前最流行容器编排工具。
-
-
总结
所以流行出一句话:docker公司已死,但是docker技术永生。就是来说,docker 一手好牌,但是docker 在容器编排领域毫无建树,但是docker技术已经流行起来。下一篇。让我们实实在在开始玩起docker。