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:用于限制容器的网络带宽。

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

相关推荐
ac.char1 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
罗不俷3 小时前
【RH134知识点问答题】第13章:运行容器
容器·rhel
中科米堆3 小时前
中科米堆CASAIM自动化三维测量设备测量汽车壳体直径尺寸
运维·自动化·汽车·视觉检测
缘华工业智维4 小时前
CNN 在故障诊断中的应用:原理、案例与优势
大数据·运维·cnn
开航母的李大5 小时前
软件系统运维常见问题
运维·服务器·系统架构·运维开发
AI大模型5 小时前
基于 Docker 的 LLaMA-Factory 全流程部署指南
docker·llm·llama
华强笔记6 小时前
Linux内存管理系统性总结
linux·运维·网络
tb_first7 小时前
k8sday11服务发现(2/2)
docker·云原生·容器·kubernetes·k8s
拾心217 小时前
【运维进阶】Ansible 角色管理
运维·ansible
phoenix09817 小时前
ansible部署lnmp-allinone
linux·运维·ansible