在docker上调用宿主机硬件_一篇把docker基础说的很透彻的文章

本文详细介绍了Docker的基本原理,包括目标、使用场景、基本组成,特别是深入探讨了Docker如何利用namespace和cgroup实现容器隔离。此外,还对比了Docker与虚拟机的区别,强调了Docker在资源效率和启动速度上的优势。最后,讨论了Docker的网络模式、镜像、卷和Registry,为读者提供了全面的Docker知识框架。
摘要由CSDN通过智能技术生成

Docker介绍

Docker的目标

1. 提供简单轻量的建模方式

2. 职责的逻辑分离

3. 快速高效的开发生命周期

4. 鼓励使用面向服务的架构

Docker使用场景

1. 使用dockers容器开发,测试,部署服务

2. 创建隔离的运行环境

3. 搭建测试环境

4. 构建多用户的平台即服务(PaaS)基础设施

5. 提供软件即服务(SaaS)应用程序

6. 高性能、超大规模的宿主机部署

Docker基本组成

1. Docker Client客户端

2. Docker Daemon守护进程

3. Docker Image镜像

4. Docker Container容器

5. Docker Registry仓库

Docker容器实现介绍

Docker依赖的Linux内核特性

namespace(命名空间)

编程语言中,引入命名空间的概念是为了重用变量名或者服务例程明 在不同的命名空间中使用同一个变量不会产生冲突。 linux系统引入命名空间也有类似的的作用 例如,在没有操作级虚拟化的linux 系统中,用户态进程从1开始编号(PID) 引入操作心痛虚拟化之后,不同的容器有着不同的PID命名空间,每个容器中的进程都可以1开始编号而不产生冲突

目前,linux中的命名空间有6钟类型,分别对应操作系统管理的6中资源

· 挂载点(mount point)CLONE_NEWNS

· 进程(PID)CLONE_NEWPID

· 网络(net)CLONE_NEWNET

· 进程间通讯(ipc)CLONE_NEWIPC

· 主机名(uts)CLONE_NEWUTS

· 用户(uid)CLONE_NEWUSER

控制组(Cgroup)

命名空间是从命名和编号的角度进行隔离,而控制组则是将进程进行分组, 并真正的将各组进程的计算机资源进行限制,隔离, 控制组是一种内核机制,他可以对进程进行分组,跟踪,限制其使用的计算资源

对于每一类计算资源,控制组通过所谓的子系统(subsystem)来进行控制

· cpusets: 用来分配一组cpu给指定的cgroup,该cgroup中的进程只等被调度到该组CPU上去执行

· blkio: 限制cgroup中的块IO

· cpuacct: 用来统计cgroup中的cpu使用

· devices: 用来黑白名单的方式控制cgroup可以创建和使用的设备节点

· freezer:用来挂起指定的cgroup,或者唤醒挂起的cgroup

· hugetlb:用来限制cgroup中的hugetlb的使用

· memory:用来跟踪限制内存及交换分区的使用

· net_cls: 用来根据发送端的cgroup来标记数据包,流量控制器(traffic controller)会根据这些标记来分配优先级

· net_prio:用来配置cgroup的网络通信优先级

· cpu:用来设置cgroup中的cpu调度参

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值