码迷,mamicode.com
首页 > 其他好文 > 详细

docker理论

时间:2016-08-19 22:25:41      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:linux   虚拟机   

Docker理论

Docker 是一个开源的应用容器引擎,主要利用 linux 内核 namespace 实现沙盒隔离,cgroup 实现资源限制。

Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。

Docker的基础是Linux的容器技术(LXC)

Docker,正是在容器的基础上进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作Docker的容器就像操作一个快速轻量级的虚拟机一样简单。

 

 

技术分享

 

VM是在硬件层面实现虚拟化

技术分享 

Docker几乎没有使用虚拟化的东西,直接复用了host主机的os,是内核级的虚拟化

docker优势:

(1)Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。

(2)其次,Docker对系统资源的利用率很高,一台主机上可以同时运行数千个Docker容器。而且容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。

 

 

1.Docker包括三个基本概念

镜像(Image) 镜像就是一个只读的模板

容器(Container) 运行应用

仓库(Repository) 集中存放镜像文件的场所,分为公有仓库和私有仓库2种形式

 

技术分享 

 

2.网络管理

技术分享 

容器的四种网络模式

bridge 桥接模式、host 模式、container 模式和 none 模式

启动容器时可以使用 --net 参数指定,默认是桥接模式

 

Bridge

 

技术分享 

(1) 利用 veth pair 技术,在宿主机上创建两个虚拟网络接口设备,假设为veth0 veth1。而 veth pair 技术的特性可以保证无论哪一个 veth 接收到网络报文,都会将报文传输给另一方

(2) veth0 附加到docker0 网桥上。保证宿主机的网络报文可以发往 veth0

(3) veth1 添加到容器所属的 namespace ,并被改名为 eth0

如此一来,保证宿主机的网络报文若发往 veth0,则立即会被 eth0 接收,实现宿主机到容器网络的联通性;同时,也保证 容器单独使用 eth0,实现容器网络环境的隔离性。

缺点:和宿主机以外的网络通信比较困难

 

Host

 

技术分享 

可以直接使用宿主机的 IP 地址与外界进行通信,若宿主机的 eth0 是一个公有 IP,那么容器也拥有这个公有 IP。同时容器内服务的端口也可以使用宿主机的端口。

缺点:容器不再拥有隔离、独立的网络栈,会和宿主机发生资源抢夺

 

Container

技术分享 

(1) 查找其他容器(即需要被共享网络环境的容器)的网络

(2) 将新创建的容器(也是需要共享其他网络的容器)namespace,使用其他容器的namespace

可以用来更好的服务于容器间的通信。可以通过 localhost 来访问 namespace 下的其他容器,传输效率较高。虽然多个容器共享网络环境,但是多个容器形成的整体依然与宿主机以及其他容器形成网络隔离。另外,这种模式还节约了一定数量的网络资源。

缺点:它并没有改善容器与宿主机以外世界通信的情况。

 

None

不属于任何的网络环境。容器内部就只能使用 loopback 网络设备,不会再有其他的网络资源。

但是可以在没有网络配置的情况下,做其他无限多可能的网络定制开发。这也恰巧体现了 Docker 设计理念的开放。

 

3.安全问题

评估Docker的安全性时,主要考虑3个方面:

由内核中名字空间namespace和控制组cgroups提供的容器的内在安全

Docker程序本身的抗攻击性

加固内核安全性来影响容器的安全性:白名单,黑名单,selinux

 

4.分布式,多点运行,高可用

Docker compose

Docker swarm

Docker mesos

 


本文出自 “11841085” 博客,转载请与作者联系!

docker理论

标签:linux   虚拟机   

原文地址:http://11851085.blog.51cto.com/11841085/1840386

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!