首页 > 其他分享 >修改docker的cgroup driver为systemd

修改docker的cgroup driver为systemd

时间:2023-05-05 10:13:29浏览次数:44  
标签:systemd driver 修改 cgroup cgroupfs docker

简单来说修改docker的cgroup driver为systemd的原因是因为在文档CRI installation中的相关说明:“使用systemd作为init system的Linux的发行版,使用systemd作为docker的cgroup driver可以确保服务器节点在资源紧张的情况更加稳定”。但是在修改后发现自己的docker服务无法正常启动,以下说明具体修改方法及报错原因。#docker专栏#

 

1,什么是cgroups?

cgroups(Control Groups) 是 linux 内核提供的一种机制

它可以限制、记录任务组所使用的物理资源

它是内核附加在程序上的hook,

使程序运行时对资源的调度触发相应的钩子,

达到资源追踪和限制资源使用的目的

2,cgroupfs是什么?

docker默认的Cgroup Driver是cgroupfs   

cgroupfs是cgroup为给用户提供的操作接口而开发的虚拟文件系统类型,

它和sysfs,proc类似,可以向用户展示cgroup的hierarchy,通知kernel用户对cgroup改动

对cgroup的查询和修改只能通过cgroupfs文件系统来进行

3,为什么要修改为使用systemd?

   Kubernetes 推荐使用 systemd 来代替 cgroupfs

  因为systemd是Kubernetes自带的cgroup管理器, 负责为每个进程分配cgroups,  

   但docker的cgroup driver默认是cgroupfs,这样就同时运行有两个cgroup控制管理器, 

   当资源有压力的情况时,有可能出现不稳定的情况

  如果不修改配置,会在kubeadm init时有提示:

[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. 
The recommended driver is "systemd".
Please follow the guide at https://kubernetes.io/docs/setup/cri/

 

修改方法是在/etc/docker/daemon.json中添加如下内容:

 

{
"exec-opts":["native.cgroupdriver=systemd"]
}

 

docker 默认Cgroup Driver为cgroup,但是在kubernetes1.14之后的版本推荐使用systemd,对于18.x.x版本的docker来说是相对比较简单的,只需要修改/etc/docker/daemon.json的配置就可以配置docker的cgroup驱动。
Kubernetes releases before v1.24 included a direct integration with Docker Engine, using a component named dockershim. That special direct integration is no longer part of Kubernetes (this removal was announced as part of the v1.20 release). You can read Check whether Dockershim removal affects you to understand how this removal might affect you. To learn about migrating from using dockershim, see Migrating from dockershim.    

标签:systemd,driver,修改,cgroup,cgroupfs,docker
From: https://www.cnblogs.com/gaoyuechen/p/17373282.html

相关文章

  • Docker CLI docker compose pull常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍DockerCLI中d......
  • docker部署
    使用Docker在CentOSLinuxrelease7.9.2009服务器上部署MySQL和Redis是一个非常好的选择,因为它可以让你更轻松地管理和维护服务。以下是如何使用Docker完成这两个数据库服务的安装:安装必要的依赖:kotlinCopycodesudoyuminstall-yyum-utilsdevice-mapper-persi......
  • Docker - 容器虚拟化
    目录Docker0虚拟化0.1什么是虚拟化0.2虚拟化技术中常见名词1docker简介1.1什么是docker1.2docker的优势1.3容器与虚拟机比较2Docker镜像、容器、仓库Docker中有三个核心概念:镜像、容器和仓库因此,准确把握这三大概念对于掌握Docker技术尤为重要①镜像(Image)②容器(Conta......
  • docker mysql 容器自动停止 -- docker update
    原因:mysql容器占用资源过高被系统杀死解决方法dockerupdate-m500M--memory-reservation500M--memory-swap1000M容器id/容器名说明-m限制内存最大值--memory-reservation是弹性控制内存大小,防止损失性能,建议要开。当宿主机资源充足时,允许容器尽量多地使......
  • [Docker] Add a SQLite Console Shortcut with the Dockerfile
    Withalong-runningnodeserverandadatabase,sometimesit'susefultosshintothevirtualmachinetoexplorethefilesystem,andlookatthedatabase.InDockerfile,add:RUNecho'#!/bin/sh\nset-xe\nsqlite3\$DATABASE_URL'>/u......
  • Docker可视化管理工具对比(DockerUI、Shipyard、Rancher、Portainer)
    1、前言   谈及docker,避免不了需要熟练的记住好多命令及其用法,对于熟悉shell、技术开发人员而言,还是可以接受的,熟练之后,命令行毕竟是很方便的,便于操作及脚本化。但对于命令行过敏、非技术人员,进行docker部署、管理是比较头疼的,学习成本是很高的。    而市面上的可视化......
  • Docker可视化管理工具Portainer
    1、portainer介绍    Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。 Portainer展示......
  • docker 部署 canal
    1、docker部署canal/canal-server:v1.1.61.1、下载镜像dockerpullcanal/canal-server:v1.1.61.2、挂载properties配置文件1.2.1、先进行第一次运行,拷贝properties配置文件dockerrun-p11111:11111--namecanal-dcanal/canal-server:v1.1.61.2.2、拷贝运行后的容器......
  • 01. k8s1.15.1高可用版本(docker引擎,Centos7.9)
    1.软件版本首先要把centos7系统的内核升级最好4.4以上(默认3.10的内核,运行大规模docker的时候会有bug)软件/系统版本备注Centos7.9最小安装版k8s1.15.1flannel0.11etcd3.3.102.角色分配k8s角色主机名节点IP备注master1+etcd1mas......
  • Centos7中安装Docker
    在CentOS7上安装Docker的步骤如下:更新系统使用以下命令更新系统软件包:sudoyumupdate安装Docker依赖使用以下命令安装Docker依赖包:sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2添加Docker软件仓库使用以下命令添加Docker软件仓库:sudoyu......