首页 > 其他分享 >Docker碎碎念

Docker碎碎念

时间:2023-08-18 16:56:10浏览次数:34  
标签:容器 限制 控制组 内核 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:用于限制容器的网络带宽。

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

标签:容器,限制,控制组,内核,Docker,碎碎念,内存
From: https://www.cnblogs.com/coderzhouyu/p/17640993.html

相关文章

  • 安装docker配置阿里云镜像
    使用docker之前需要先了解dockerdocker的基本组成镜像(image):Docker镜像就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。容器(container):Docker利用容器独立运行一个或一组应用。容器是用镜像创建的运行实例。仓库(Repository):仓库是集中存放镜像文件的......
  • docker网咯的学习
    dockernetworkcreate--driverbridge --subnet192.168.0.0/16--gateway192.168.0.1mynetnetwork网络命令 create创建 --driver网络模式  默认为bridge  --subnet 创建子网掩码  --gateway网关地址: 最后加上网络名称步骤--driverbridge--subne......
  • Docker常用命令
    dockerimages查看本地镜像dockersearchcentos搜索镜像dockerpullcentos:7下载centos7镜像dockertagcentos:7mycentos:1修改本地镜像的名字dockerrmicentos:7删除本地镜像dockerps-a查看所有容器,包括已经停止的容器dockerps查看正在运行的容器8dockerstop......
  • docker搭建MySQL的主从复制
    用Docker搭建Mysql的主从复制原创 青菜浪人 青菜浪人 2023-07-3015:33 发表于陕西收录于合集#docker11个创建主容器docker run -d -p 3306:3306 --privileged=true -v /mysql/log:/var/log/mysql -v /mysql/data:/var/lib/mysql -v /mysql/conf:/etc/mysql......
  • docker-compose是什么怎么使用
    docker-compose是一个用于定义和运行多个Docker容器的工具,它允许你使用一个单独的配置文件来定义多个容器、网络设置、卷挂载等,并可以一次性地启动、停止、重建整个应用程序。以下是使用docker-compose的基本步骤:创建docker-compose.yml文件:在你的项目目录下创建一个......
  • Docker方式安装Archery
    Docker方式安装Archery基本环境信息OS:RHELServer7.8_x86_64()archery版本:hhyo/Archery-1.9.1Python版本:3.9.10准备docker环境1.安装Docker可以执行命令来获取安装脚本:curl-fsSLhttps://get.docker.com-oget-docker.sh|sudosh也可以直接访问https://get.docker.co......
  • docker容器命令
    一、容器容器是基于镜像创建的一个运行实例,可以被启动、停止、删除等操作。容器是动态的,它可以在运行时修改,可以在容器内安装应用程序、修改配置等。每个容器都是相对独立的、隔离的运行环境,与宿主机和其他容器隔离开来。简而言之,一个镜像可以创建多个容器。每个容器都使用相同的镜......
  • dockerfile的学习
    dockerfile的命令层:FROM:基础镜像,一切从这里开始MAINTAINER:创建镜像的作者 ,姓名+邮箱ADD:添加内容,如Tomcat压缩包,Tomcat镜像等RUN:镜像构建的时候需要运行的命令WORKDIR:镜像的工作目录VOLUME:镜像挂载目录EXPOSE:保留端口配置(替代了-p指定暴露端口)CMD:指定容器运行时要......
  • 【已解决】docker overlay2占用大量磁盘空间处理方法
    在使用docker容器的时候遇到了容量上的问题,做一个记录处理方式1:在使用docker时,往往会出现磁盘空间不足,导致该问题的通常原因是因为docker中部署的系统输出了大量的日志内容。此时,可通过手动或定时任务进行清除。针对/var/lib/docker/overlay2空间占用很大网上提供了很多解决方......
  • Docker Build Cache 缓存清理
    Docker18.09引入了BuildKit,提升了构建过程的性能、安全、存储管理等能力。dockersystemdf命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况:[root@test/]#dockersystemdfTYPETOTALACTIVESIZE......