docker容器技术基础入门(转载)

docker容器技术基础入门

主机级虚拟化

 type-I: VMware ESXi/XenServer/PVE/
    主机硬件 -> hypervisor -> 创建使用虚拟机

 type-II: VMware Workstation/VirtualBox
    主机硬件 -> host os -> vmm -> 创建使用虚拟机

主机级别虚拟化分为两种类型:Type-I(裸机虚拟化)Type-II(托管虚拟化),以下是两种类型的代表产品:


Type-I 虚拟化(Bare-Metal Virtualization)

Type-I 虚拟化直接运行在硬件之上,无需操作系统,性能更高且适用于企业级环境。

代表产品:

  1. VMware ESXi

    • 企业级虚拟化解决方案,广泛应用于数据中心。
  2. Microsoft Hyper-V (Server Core Mode)

    • 微软提供的企业虚拟化平台,作为 Windows Server 的组件或独立版本。
  3. Citrix Hypervisor (原 XenServer)

    • 开源 Xen 虚拟化技术的企业版本,广泛用于服务器虚拟化。
  4. KVM (Kernel-based Virtual Machine)

    • 基于 Linux 内核的开源虚拟化技术,性能强大,适合云计算环境。
  5. Oracle VM

    • 基于 Xen 的 Oracle 企业虚拟化产品。
  6. Proxmox VE

    • 开源虚拟化解决方案,集成了 KVM 和容器技术。

Type-II 虚拟化(Hosted Virtualization)

Type-II 虚拟化运行在宿主操作系统之上,适用于桌面用户,方便快捷,但性能稍逊。

代表产品:

  1. VMware Workstation/Player

    • 桌面虚拟化软件,支持多操作系统开发和测试环境。
  2. Oracle VirtualBox

    • 开源跨平台虚拟化软件,适合个人开发者和轻量级测试环境。
  3. Microsoft Hyper-V (GUI Mode)

    • 在 Windows 10/11 Pro 和 Enterprise 上可用的托管虚拟化平台。
  4. Parallels Desktop

    • 专为 macOS 用户设计,支持运行 Windows、Linux 等操作系统。
  5. QEMU

    • 开源虚拟化解决方案,可与 KVM 配合使用,也可独立运行。
  6. Linux Containers (LXC)

    • 虽非传统意义上的虚拟化工具,但常与 Type-II 虚拟化进行对比,适合轻量级隔离。

区别总结:

  • Type-I 更适合企业环境,强调性能和资源优化,适用于大规模虚拟化部署。
  • Type-II 适合个人开发和测试,强调易用性和跨平台支持。

如果你正在寻找某种特定产品的使用建议或对比,我可以提供更多详细信息!

容器级虚拟化

CGroups:Control Groups
    控制容器使用cpu、内存资源
Namespaces:名称空间,
    隔离各容器资源
LXC:LinuX Container
    lxc-create:快速创建一个用户空间
    template:基于模板完成安装过程,创建名称空间

LXC

Linux Containers 的缩写,一种操作系统层虚拟化技术,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器,内含应用软件本身的代码,以及所需要的操作系统核心和库。

Namespaces

namespace:名称空间,在内核空间实现多个隔离IPC,User,Net等,原生支持 (UTS,Mount,IPC,PID,User,Net)
UTS namespace 主机名与域名
Mount namespace 挂载点
IPC namespace 信号量、消息队列和共享内存
PID namespace 进程号
User namespace 用户和组
Network namespace 网络设备、网络栈、端口等
namespace 系统调用参数 隔离内容 内核版本
UTS CLONE_NEWUTS 主机名与域名 2.6.19
IPC CLONE_NEWIPC 信号量、消息队列和共享内存 2.6.19
PID CLONE_NEWPID 进程编号 2.6.24
Network CLONE_NEWNET 网络设备、网络栈、端口等 2.6.29
Mount CLONE_NEWNS 挂载点(文件系统) 2.4.19
User CLONE_NEWUSER 用户和用户组 3.8

cgroups

cgroups:控制组群(英语:control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组的资源
blkio :块设备 IO
cpu : CPU
cpuacct : CPU 资源使用报告
cpuset :多处理器平台上的 CPU 集合
devices :设备访问
freezer :挂起或恢复任务
memory :内存用量及报告
perf_event :对 cgroup 中的任务进行统一性能测试
net_cls : cgroup 中的任务创建的数据报文的类别标识符

docker

  • docker中的容器引擎
 lxc -> libcontainer -> runC
早起使用lxc技术进行二次封装
	使用lxc-create创建用户空后,连接docker镜像仓库(不是使用template启动),使用images(镜像)启动容器

一个容器内只运行一个进程

后期弃用了lxc,
编写了libcontainer实现lxc功能,
后续标准化为runC :runcontainer

runcontainer:新版docker容器运行引擎
隔离,安全
分层构建,联合挂载层

容器编排技术

machine + swarm + compose
mesos + marathon
kubernetes -> k8s
posted @ 2020-04-28 14:01  evescn  阅读(170)  评论(0)    收藏  举报