白话容器基础
容器本身没有价值,有价值的是“容器编排”
什么是“程序”?
首先,操作系统从“程序”中发现输入数据保存在一个文件中,所以这些数据就会被加载到内存中待命。同时,操作系统又读取到了计算加法的指令,这时,它就需要指示 CPU 完成加法操作。而 CPU 与内存协作进行加法计算,又会使用寄存器存放数值、内存堆栈保存执行的命令和变量。同时,计算机里还有被打开的文件,以及各种各样的 I/O 设备在不断地调用中修改自己的状态。
一旦“程序”被执行起来,他就从磁盘上的二进制文件, 变成了计算机内存中的数据、寄存器中的值,堆栈中的指令、被打开的文件、以及各种设备的状态信息的一个集合。 像这样一个程序运行起来来后的计算机执行环境的综合,就是进程。
进程静态表现----程序---磁盘上
进程动态表现---计算机里数据和状态的总和
容器技术的核心功能
通过约束和修改进程的动态表现,从而为其创造出一个“边界”。
docker等大多数linux容器来说,Cgroups资源限制,Namespace隔离资源rootfs
隔离类型
uts:主机名和域名隔离
ipc:信号量,消息队列和共享内存隔离
mnt:文件系统挂载点隔离
net:网络隔离,每个namespace都有自己独立的ip,路由和端口
pid:隔离进程id
总结:
虚拟机:
-
Hypervisor ( /ˈhaɪpəvaɪzə(r)/ )的软件是虚拟机最主要的部分。它通过硬件虚拟化功能,模拟出了运行一个操作系统需要的各种硬件,比如 CPU、内存、I/O 设备等等。
-
Guest OS ( /ɡest/)它在这些虚拟的硬件上安装了一个新的操作系统。
容器:
容器则用一个名为Docker Engine的软件代替了Hypervisor,所以好多人会把docker项目说成为“轻量级”虚拟化技术的原因,如果精准的画图不应该把 Docker Engine (/ˈendʒɪn/)或者任何容器管理工具放在跟 Hypervisor 相同的位置,因为它们并不像 Hypervisor 那样对应用进程的隔离环境负责,也不会创建任何实体的“容器”,真正对隔离环境负责的是宿主机操作系统本身, 在理解Namespace工作方式后,就会明白,并没有一个真正的"docker 容器" 运行在宿主机里面, docker项目只是帮用户启动的,还是原来的应用进程,只是创建进程的时候,docker会为他们加上各种Namespace参数。
docker架构
Linuxdocker
- 主机操作系统是 Ubuntu。
- Docker 客户端和 Docker 守护进程(统称为 Docker 引擎)在主机操作系统上运行。
- 每个容器共享主机操作系统内核。
- CentOS 和 BusyBox 是 Linux Base OS 映像。
- “无操作系统”容器表明您不需要基本操作系统即可在 Linux 中运行容器。您可以创建一个具有临时基础映像的 Docker 文件,然后运行直接使用内核的二进制文件。
- 查看这篇文章以比较基本操作系统的大小。
windows_server
- 主机操作系统是 Windows 10 或 Windows Server。
- 每个容器共享主机操作系统内核。
- 所有 windows 容器都需要nanoserver或windowsservercore的基本操作系统。
windows_hyper_v
- 主机操作系统是 Windows 10 或 Windows Server。
- 每个容器都托管在自己的轻量级 Hyper-V 虚拟机中。
- 每个容器都使用 Hyper-V VM 内的内核,它在容器之间提供了额外的隔离层。
- 所有 windows 容器都需要nanoserver或windowsservercore的基本操作系统。
镜像大小对比
Ubuntu 650 万次下载和 188 MB 大小- 下载次数最多的操作系统映像。但它也是街区里最胖的猫。
Debian 330 万次下载和 125 MB 大小- Debian 使用 Linux 内核,基本工具基于 GNU 项目。
BusyBox 250 万次下载和 2 MB 大小- BusyBox 网站声明“Busybox 在编写时考虑到了大小优化和有限资源。它也是非常模块化的,因此您可以在编译时轻松包含或排除命令(或功能)。这使定制您的嵌入式系统变得容易。要创建一个工作系统,只需在 /dev 中添加一些设备节点,在 /etc 中添加一些配置文件和一个 Linux 内核。
CentOS 120 万次下载和 172 MB 大小- 源自 Red Hat Linux Enterprise RHEL,每个版本支持 10 年。
Fedora 120 万次下载和 187 MB 大小- 由 Red Hat Linux Enterprise 赞助并致力于推动新的创新。
Alpine 40K+ 下载和 5 MB 大小- 一个更完整的 Busybox 映像,可以访问包存储库。目前我个人最喜欢的。
Cirros 23K+ 下载和 8 MB 大小- 是一个专门在云中运行的微型操作系统。它也是层数最多的图像,层数为 5。