docker启动报错205/limit的解决方案

 更新时间:2024年06月28日 14:51:01   作者:小白的程序员  
Dcoker启动报错经常能看到 205/limit这个错误提示,这是告诉你linux操作系统的文件描述符设置的和Docker的不匹配,或者是设置的比较小了,本文介绍了docker启动报错205/limit的解决方案,需要的朋友可以参考下

背景

Dcoker启动报错经常能看到 205/limit这个错误提示,这是告诉你linux操作系统的文件描述符设置的和Docker的不匹配,或者是设置的比较小了。

解决方案

linux中一切皆文件。例如一个socket都会用一个文件描述符去表示,所以linux系统文件描述符的大小,对系统是至关重要的,例如高并发的时候,如果文件描述符太小,服务器的并发是上不去的。

要解决 205/limit 可以使用两种方式。

  • 修改系统文件描述符 vim /etc/sysctl.conf
# sysctl settings are defined through files in 
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/. 
# 
# Vendors settings live in /usr/lib/sysctl.d/. # To override a whole file, create a new file with the same in 
# /etc/sysctl.d/ and put new settings there. To override 
# only specific settings, add a file with a lexically later 
# name in /etc/sysctl.d/ and put new settings there. # # For more information, see sysctl.conf(5) and sysctl.d(5). 
fs.file-max =6553600 # 这里按照实际情况填写。
fs.nr_open = 6553600

修改文件使用执行命令sysctl -p命令让设置的内容生效,并重启docker systemctl restart docker

  • 修改Docker的docker.service文件路径/usr/lib/systemd/system/docker.service文件中对文件描述符的配置,可以修改的比系统配置的最大文件描述符小一些
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
BindsTo=containerd.service
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --exec-opt=native.cgroupdriver=cgroupfs --log-level=warn --log-opt max-size=50M --storage-driver=overlay2 -H fd:// --containerd=/run/containerd/containerd.sock -H unix:///var/run/docker.sock -H tcp://0.0.0.0:900 --data-root=/data1/docker_customized
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3

# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=6553500     # 修改这里
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this option.
TasksMax=infinity

# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

# kill only the docker process, not all processes in the cgroup
KillMode=process

[Install]
WantedBy=multi-user.target

修改完Docker后,可能还需要修改containerd的启动配置文件, 文件路径/usr/lib/systemd/system/containerd.service

[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
KillMode=process
Delegate=yes
LimitNOFILE=6553500   # 修改这里
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity

[Install]
WantedBy=multi-user.target

修改文件后先执行 systemctl daemon-reload 然后执行 systemctl restart docker docker 正常启动。

以上就是docker启动报错205/limit的解决方案的详细内容,更多关于docker启动报错205/limit的资料请关注脚本之家其它相关文章!

相关文章

  • docker image tag为什么出现none的原因及解决

    docker image tag为什么出现none的原因及解决

    当我们使用docker加载新的镜像时,有时候会发现Repository和Tag名称都为none的情况,这通常是由于没有指定正确的标签名称或者仓库名称所导致的,本文主要介绍了docker image tag为什么出现none的原因及解决,感兴趣的可以了解一下
    2023-10-10
  • 使用 docker部署tomcat并接入skywalking的使用

    使用 docker部署tomcat并接入skywalking的使用

    这里主要介绍了使用 docker 部署 tomact 并接入 skywalking 的使用,因为在网上并没有查到太多相关的信息,所以这里记录下来,需要对有需求的小伙伴提供一些帮助
    2021-04-04
  • Docker工作模式及原理详解

    Docker工作模式及原理详解

    Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问!DockerServer接受到DockerClient的指令,就会执行这个命令
    2021-09-09
  • 解决docker容器与宿主机相差8小时的问题

    解决docker容器与宿主机相差8小时的问题

    使用docker-compose部署时,在输出的日志以及相关事件校验及输出时,导致事件与现实相差8小时。纠结怎么回事呢?下面小编给大家分享下解决docker容器与宿主机相差8小时的问题,一起看看吧
    2021-09-09
  • Docker容器使用方法详解

    Docker容器使用方法详解

    容器是基于镜像创建的,容器中的进程依赖于镜像中的文件,那么本篇文章我们就来深入学习容器的基本操作方法,通过示例来加深各位看官对docker容器操作的理解以及记忆,需要的朋友可以参考下
    2022-07-07
  • Docker无法登录与推送问题解决的详细教程

    Docker无法登录与推送问题解决的详细教程

    这篇文章主要介绍了如何使用阿里云容器镜像服务来解决国内访问Docker Hub速度慢的问题,并详细描述了如何设置阿里云镜像服务、配置Docker、操作镜像(包括pull和push)以及测试拉取镜像的过程,需要的朋友可以参考下
    2025-02-02
  • 聊聊Docker中容器的创建与启停问题

    聊聊Docker中容器的创建与启停问题

    一个进程可以视为一个被执行的应用程序,同样,一个Docker容器可以视为一个运行中的Docker镜像,这篇文章主要介绍了Docker中容器的创建与启停,需要的朋友可以参考下
    2022-06-06
  • docker使用Dockerfile构建镜像的方法

    docker使用Dockerfile构建镜像的方法

    这篇文章主要介绍了docker使用Dockerfile构建镜像的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Docker 镜像国内加速的方法汇总(收藏版)

    Docker 镜像国内加速的方法汇总(收藏版)

    本文介绍了在国内使用Docker时遇到的加速和优化方法,针对国内下载速度慢和断线问题,可以使用国内可用的DockerRegistryMirrors或自建DockerRegistryMirror/Proxy,针对没有公共镜像库账号导致的限流问题,可以注册各个镜像库账号并登录,感兴趣的朋友跟随小编一起看看吧
    2025-01-01
  • 如何通过vs2017的Dockerfile来生成镜像

    如何通过vs2017的Dockerfile来生成镜像

    这篇文章主要为大家详细介绍了如何通过vs2017的Dockerfile来生成镜像,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07

最新评论