Docker碎碎念

docker和虚拟机的区别

虚拟机(VM)是通过在物理硬件上运行一个完整的操作系统来实现的。

每个虚拟机都有自己的内核、设备驱动程序和用户空间,它们是相互独立且完全隔离的。

虚拟机可以在不同的物理服务器之间迁移,因为它们是以整个操作系统作为单元进行迁移的。

而容器则是在单个操作系统实例中运行的,所有容器共享相同的内核。

容器可以更快地启动和停止,并且占用更少的系统资源。

容器之间的隔离是通过命名空间和控制组等内核特性来实现的。

docker共享的linux内核,这个内核中有些什么东西呢?

Docker容器共享宿主机的Linux内核,这意味着容器中运行的应用程序和服务与宿主机共享同一个内核。这种共享内核的设计可以提供更高的性能和更低的资源消耗。

Linux内核是开源的,拥有庞大的代码库和功能丰富的特性。一些常见的内核组件和功能包括:

  1. 进程管理:内核负责管理系统中的进程和线程,包括创建、调度、终止等操作。

  2. 内存管理:内核分配和管理系统的物理内存和虚拟内存,包括页面置换、内存映射等。

  3. 文件系统:内核提供文件系统的支持,包括磁盘驱动、文件缓存、文件访问权限等。

  4. 网络协议栈:内核实现了各种网络协议,如TCP/IP、UDP等,以便应用程序进行网络通信。

  5. 设备驱动程序:内核提供了对硬件设备的驱动支持,包括网卡、磁盘控制器、USB设备等。

  6. 系统调用接口:内核定义了应用程序与内核之间的接口,通过系统调用来访问内核功能。

  7. 安全和权限管理:内核维护系统的安全性和权限控制,包括文件访问权限、进程访问控制等。

  8. 调度器:内核负责调度系统中的进程和线程,以便合理地分配CPU时间片。

这只是一些常见的内核组件和功能,实际上Linux内核非常复杂并且具有丰富的特性。Docker利用宿主机的Linux内核,并通过命名空间和cgroups等内核特性来实现容器的隔离和资源管理。

docker的资源控制

在容器中,可以使用资源限制和控制组(cgroups)来限制硬件资源的使用。

控制组是Linux内核提供的一种机制,用于将进程组织成一个层次结构,并为每个组设置资源使用限制。通过控制组,可以对CPU、内存、网络带宽等资源进行限制和分配。

Docker利用了控制组来实现对容器的资源管理。通过在创建容器时设置资源限制参数,可以限制容器使用的CPU核心数、内存量、磁盘空间等。这样就能够确保容器不会过度占用硬件资源,从而保证系统的稳定性和性能。

例如,可以使用以下参数来限制容器的资源使用:

  • --cpus:指定容器可以使用的CPU核心数量;

  • --memory:限制容器可以使用的内存量;

  • --blkio-weight:用于限制磁盘I/O的权重;

  • --network:用于限制容器的网络带宽。

通过这些资源限制参数,可以在共享内核的情况下,对每个容器进行资源隔离和控制,以避免某个容器过度占用硬件资源而影响其他容器的正常运行。

相关推荐
程序员老赵6 分钟前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
難釋懷9 分钟前
Nginx反向代理中的容错机制
运维·nginx
杨浦老苏12 分钟前
轻量级Docker仪表板Servedash
运维·docker·监控·群晖·仪表板
正经教主16 分钟前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器
志栋智能20 分钟前
超自动化巡检:如何选择适合你的起点?
运维·自动化
bloglin9999923 分钟前
Nginx高危漏洞CVE-2021-23017及配置样例
运维·nginx
qeen8737 分钟前
【Linux】Linux简单介绍与基本指令(上)
linux·运维·服务器·学习
kiros_wang38 分钟前
Docker 使用完整指南
运维·docker·容器
Yana.nice1 小时前
history 显示时间戳操作(Bash)
运维
正经教主1 小时前
【docker基础】第九周:Docker安全与镜像优化
运维·docker·容器