Docker(2)容器技术基本概念理解

本文详细介绍了Docker容器技术的核心概念,包括容器的定义、与虚拟机的区别,以及Docker Engine的作用。重点讨论了Namespace和Cgroups在实现容器隔离和资源控制中的角色,还涉及容器镜像、Volume机制以及Docker在进程管理和资源调度方面的实践。通过阅读,读者将对Docker容器的运行机制有深入理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 容器
1.1 定义

一种沙盒技术,

  • 可以将应用运行在其中,与外界隔离
  • 这个沙盒可以被方便地“转移”。

本质上,他就是一种特殊的进程。通过在创建容器进程的时候,指定了这个进程所需要启用的一组Namespace参数,进而让该容器进程只能看到当前Namespace所限定的资源、文件、设备、状态或者配置。–进程划分独立空间思想

一个正在运行的Linux容器,可以被一分为二地看待:
  • 一组联合挂载在/var/lib/docker/aufs/mnt上的rootfs,这部分被称为“容器镜像”(Container Image),是容器的静态视图
  • 一个由Namespace + Cgroups构成的隔离环境,这部分被称为“容器运行时”,是容器的动态视图

docker framwork.PNG

1.2 核心原理小结

在为待创建的用户进程

  • 启动Linux Namespace配置
  • 设置指定的Cgroups参数
  • 切换进程的根目录(change root, 配合namespace mount)

切换进程的根目录的时,Docker项目会在最后一步优先使用pivot_root的系统调用,如果系统不支持,才会使用chroot。

2. 虚拟机

虚拟机在物理宿主机上存在一层Hypervisor的硬件虚拟化层,通过Hypervisor虚拟化出了CPU, 内存,I/O设备等,然后在这些虚拟设备上装了一个新的操作系统,即GuestOS,通过不同的操作系统,来实现同一个物理宿主机上的环境隔离。

容器和虚拟机的区别
# 容器 虚拟机
关键技术 Docker Engine Hypervisor,GuestOS
实现原理 Docker Engine通过在原有物理宿主机上的原操作系统,在起Docker进程的时候,通过指定各种namespace参数实现了不同Docker容器(进程)之间的进程隔离 Hypervisor通过虚拟化出硬件设备,在硬件设备上安装若干个GuestOS,通过操作系统,实现不同操作系统内的进程互相不感知
本质 不同的Docker容器本质上是物理宿主机上的操作系统中运行的不同进程 不同的虚拟机本质上是Hypervisor虚拟化出来硬件上安装的不同的操作系统
优劣 GuestOS会带来很大的性能消耗:1. 不做优化的场景,根据实验一个运行CentOS的KVM VM启动之后V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值