原理相关概念
Namespace命名空间
Docker的运行和namespace有着密切相关的联系,Docker中每个容器都有自己独立的运行位置
空间:对于我们来讲,一个空间是可以与外界相隔的。就像所谓的平行宇宙,就是好多个宇宙之间,每个宇宙中发生的事情,都不会影响到其他的宇宙。空间也就是这个意思。
再比如:我在北京,你在家乡,如果我想给你一个东西,你是拿不到的,我们之间唯一有影响的就是通过网络来联系,可以聊天,或者发送数据,这个例子更贴合容器的概念
容器在运行时,就是在一个空间内,每个容器就是一个空间
是希望同样的环境可以运行多个,比如手机微信应用分身也是利用了这个原理;最好的例子就是,比如做一个web集群,可以通过多个容器来搭建,从而省掉了用服务器去搭建web服务,也充分的利用了硬件资源,因为一般如果一台服务器只搭建一个服务的话,硬件资源过剩,造成浪费,也造成了相应的经济损失。
当然以上所说的目的,虚拟机也可以达到,但是虚拟机是在模拟硬件来进行工作,安装起来也是要安装一个系统,然后再去部署服务,下面会说到。
- 容器化的虚拟化
- VMware虚拟机
- OpenStack虚拟化(阿里云)
容器是一个大的品类,就像操作系统一样,操作系统包括windows/linux/unix…,其中一个只是操作系统的种类。Docker也是容器的一种种类,或者说是品类都可以。虽然容器是一个大的种类,但是使用容器的应用使用镜像实例化后也称之为容器。
主流容器种类:Docker、Podman、coreOS、lxc、buildah、skopo…
images + docker = container/application,Docker镜像实例化后就是一个容器(container/application)
images + vmware = 虚拟机,VMware镜像实例化后就是一个虚拟机
如:Podman它是被红帽公司所收购的,所以在基于红帽的linux操作系统上,可以直接yum来安装,与docker使用方法类似
用类镜像、操作系统类镜像、工具类镜像
我们在之前安装Docker后,有下载了三个镜像httpd/centos/busybox,其中httpd属于应用类镜像,centos属于操作系统类镜像,busybox属于工具类镜像,
完全解耦虚拟化和半解耦虚拟化
在了解这两类虚拟化之前,需要了解两个东西,驱动程序和动态链接库文件
驱动程序是硬件的说明手册,而库文件是软件的说明手册