docker

虚拟化软件

根据资源消耗的多少划分,资源消耗少的称为轻量级软件,资源消耗多的软件称为重量级软件。
轻量级软件:docker
重量级软件:vmware、kvm(openstack是虚拟机的管理软件,基于kvm,常用于云计算里面的虚拟,买的云服务器就是一个虚拟机,openstack是开源、免费的)等

hypervisor:是一个虚拟化管理软件,例如vmware-esxi,是一个完全的虚拟化软件,基于裸机的硬件设施,不需要通过操作系统,是全虚拟化的软件。而vmware workstations就是半虚拟化的,需要经过操作系统。

docker和虚拟机的区别

1.层次封装方面:虚拟机多一层封装
2.启动速度:docker启动速度快(因为docker是基于操作系统之上的,因此开机软件不需要再开操作系统)
3.资源消耗方面:docker资源消耗少
4.扩展:docker扩展性能上面更加快捷,支持更多的应用
5.隔离性:docker的隔离性较差,虚拟机的隔离性较强
区别图如下:
在这里插入图片描述

docker软件

docker里面的镜像不是一个完整的操作系统,但是是一个微型的操作系统,里面有最基础的系统服务。

docker的本质是一个进程。

docker是轻量级的虚拟化软件模式,是用go语言开发的一个工具。相比较vmware而言消耗更少的资源(如cpu、磁盘、内存等)。docker是由google公司开源发布的一个工具。是美国限制出口的技术,限制程度仅次于芯片技术。

全球五大科技公司:
1.apple
2.google
3.amazon
4.facebook
5.microsoft

docker中的元素

1.镜像

镜像可以理解成一个软件/程序的安装包。

镜像中包含的内容只需要存放运行该服务的最基本内容,实际上,可以将容器镜像中的内容,视为 Linux 发行版的一个安装实例,因为镜像中完整包含的 RPM 软件包、配置文件等内容。

以nginx镜像中为例,其镜像中包含的内容:
1.基础的系统(微内核系统),一般使用debian系统
2.nginx的代码
3.gcc–>一个编译软件
4.运行nginx代码相关的库

2.容器

容器是软件的基本单元,里面可以放应用程序。其作用是将软件/程序做成一个开发、部署、转运的基本单元。

使用容器的优点:
容器可以确保其里面运行的应用拥有必需的库、依赖项和文件,可以便捷地进行软件移植。

3.仓库

仓库是存放docker镜像的一个数据库,相当于GitHub,用户可以从docker镜像仓库pull拉取镜像资源。docker镜像仓库的地址为hub.docker.com

docker的底层隔离机制实现–LXC

LXC是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。

docker是依靠LXC(linux-Containers)容器来实现隔离的。而LXC主要是依赖Namespace命名空间和Control groups系统来实现的。

namespace命名空间

LXC在隔离控制方面依赖于Linux内核的namespace特性,具体而言就是在clone时加入相应的flag(NEWNS NEWPID等等)。不同的docker容器有不同的命令空间,因此可以在物理上面将docker进行一个隔离

cgroup子系统

LXC在资源管理方面依赖于Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。用cgroups对资源进行限制,将资源隔开。可以在逻辑上面将docker进行一个隔离。
如指定docker在某个cpu上面进行调度:
假设现在有一台主机,其核心个数是4核,即逻辑cpu是4个核心,也就意味着该机器可以同时处理4个进程,但是一旦用cgroup去指定某个docker服务只能在cpu1上面运行,则当另外3个cpu核空闲的话,docker服务也不能运行,只能等待cpu1的处理机进行调度。这样就可以实现docker隔离。

docker底层隔离机制的实现

docker的虚拟网络类型

docker启动时会分配给docker网桥一个默认的虚拟ip,该接口作为所有容器的网关。docker里面的容器的ip地址依次为172.17.0.2,172.17.0.3。…。每一个对外面发布的容器都需要通过ip映射。宿主机的ens33网卡就想当于WAN口,docker的网卡口相当于LAN口。

网络模式:

1.host模式:容器不会虚拟自己的网卡,容器的网卡和宿主机的网卡在同一个命名空间中,直接使用宿主机的ip。优点:网络性能好,缺点:独立性差,因为共用一个命令空间。host也可以跨主机通信
2.none模式:docker容器有自己的网络命名空间,该空间中只有回环地址(127.0.0.0),没有网卡,ip地址,路由信息等,需要docker手动去配置。
3.container模式:所有的容器共用同一个ip地址(ip的命名空间),然后连接到docker网桥上。适用于集群
4.bridge模式:隔离性好,与外界通信需要DNAT装换。每个容器都会虚拟出自己的网卡,且网卡都有自己ip地址,与宿主机进行DNAT地址转换,从而和外界通信
5.overlay模式:实现不同docker机器上的通信。可以实现容器跨节点(主机)通信。需要自己创建,在第二层(数据链路层)

前4种模式,只能在一同主机上面进行通信。
默认情况下,docker采用的网络类型,就是bridge类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值