47个Docker常见故障的原因和解决方式

news2024/12/28 5:46:47

本文针对Docker容器部署、维护过程中,产生的问题和故障,做出有针对性的说明和解决方案,希望可以帮助到大家去快速定位和解决类似问题故障。

Docker是一种相对使用较简单的容器,我们可以通过以下几种方式获取信息:

1、通过docker run执行命令,或许返回信息

2、通过docker logs 去获取日志,做有针对性的筛选

3、通过systemctl status docker查看docker服务状态

4、通过journalctl -u docker.service 查看日志

以下是整理的docker容器类问题故障,分为9个类

一、启动类故障

1、docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

原因:Docker未正常启动

解决方式:systemctl start docker

2、can't create unix socket /var/run/docker.sock: is a directory

原因:docker.sock不能创建

解决方式:rm -rf /var/run/docker.sock

然后重新启动docker

3、Job for docker.service failed. Failed to start Docker Application

原因:Selinux引起

解决方式:/etc/sysconfig/selinux , 把 selinux 值改为disabled

重启docker解决

4、docker: Error response from daemon:

/var/lib/docker/overlay/XXXXXXXXXXXXXXXXXXXXXXX: no such file or directory.

原因:docker没有指定目录或文件

解决方式:

systemctl stop docker

rm -rf /var/lib/docker/*

systemctl start docker

重启run镜像启动容器

5、docker: Error response from daemon: Conflict. The container name "XXX" is already in use by container "XXX". You have to remove (or rename) that container to be able to reuse that name.

原因:docker name重名

解决方式:改名容器或者删除重建容器

6、Error: Connection activation failed: No suitable device found for this connection

原因:网卡配置问题

解决方式:重启网卡

7、系统重启后docker无法启动

报错为:docker0: iptables: No chain/target/match by that name

原因:docker服务iptables问题

解决方式:重启docker服务system restart docker

8、Error starting daemon: error initializing graphdriver: driver not supported

使用overlay2存储驱动启动docker daemon报错

原因:daemon缺少配置

解决方式:

添加配置:

/etc/docker/daemon.json

{"storage-driver": "overlay2",

"storage-opts": ["overlay2.override_kernel_check=true"]}

9、Failed to start docker.service: Unit docker.service is masked.

未知原因:docker 被mask

解决方式:

systemctl unmask docker.service

systemctl unmask docker.socket

systemctl start docker.service

10、Failed to start docker.service: Unit is not loaded properly: Invalid argument.

未知原因:docker服务无法正常load

解决方式:卸载docker, 删除docker.service

重新安装docker

11、docker-compose启动容器时报错:

/usr/lib/python2.7/site-packages/requests/init.py:80: RequestsDependencyWarning: urllib3 (1.22) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning)

未知原因:pip相应组件版本不支持

解决方式:

pip uninstall urllib3

pip uninstall chardet

pip install requests

12、docker容器重启故障

强杀docker进程后,重启docker。docker中的容器无法启动并报错

docker restart XXXXXXX Error response from daemon: Cannot restart container XXXXXXX: container "XXXXXXXXXXXXXXXX": already exists

原因:旧容器未安全退出

解决方式:docker-containerd-ctr --address /run/docker/containerd/docker-containerd.sock --namespace c rm <容器hash_id>

docker start 容器

13、docker重启错误-重启命令一直卡住

systemctl restart docker 卡住

未知原因:可能是启动的容器数量过多,或者磁盘IO问题

解决方式:

systemctl start docker-cleanup.service

systemctl start docker

二、权限问题报错

14、Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

解决方式:

查看 /var/run/docker.sock所在用户组

将用户重新加入docker组中,usermod -aG docker ${USER}

15、chown socket at step GROUP: No such process

原因:docker无法找到Group组信息,docker组有可能被误删除,

解决方式:groupadd docker

16、Post http:///var/run/docker.sock/v1.XXX /auth: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?

原因:非Root用户管理Docker时,权限不足

解决方式:

groupadd docker

usermod -a -G docker user

17、docker commit镜像时报错

Error processing tar file(exit status 1): unexpected EOF

原因:可能是权限问题引起

解决方式:chmod +x 加一个执行权限

三、镜像和仓库问题报错

18、Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io

原因:Docker仓库无法访问

解决方式:

修改Docker仓库源为国内或者自建的仓库源

修改/etc/docker/daemon.json

19、推送本地镜像报错

The push refers to a repository [XXXX] Get https://xxx/v1/_ping: http: server gave HTTP response to HTTPS client

原因:docker registry未采用https服务所致

解决方式:

/etc/docker/daemon.json 文件写入:

{ "insecure-registries":[""] }

20、/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go: starting container process caused "exec: \"/bin/bash\": executable file not found in $PATH".

原因:Docker镜像自身问题或者Docker引擎版本比较低导致

解决方式:可以升级Docker版本服务

21、构建镜像,执行chown -R非常慢

原因:Docker使用写时复制策略,所以chown命令执行时,会将上层镜像文件全部复制到当前层,然后再修改权限,再写入文件系统。

解决方式:不应该使用chown -R 这类大批量修改文件的命令

22、docker build构建镜像的时候报错:

Message from syslogd kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

原因:docker engine版本过高

解决方式:docker engine版本需要和docker内部镜像的内核版本匹配

23、docker: Error response from daemon: containerd: container did not start before the specified time-out.ERRO[0133] error getting events from daemon: context canceled

原因:修改完docker root dir,重启后,下载镜像报错

解决方式:重启docker服务或者重启服务器

四、资源问题报错

24、Docker no space left on device

原因:空间不足

解决方式:清理空间,删除未被使用的容器,镜像等资源

docker system prune -a

25、/var/lib/docker/containers 占用过大

原因:日志文件占用过大

解决方式:

cat /dev/null > *-json.log

或者

增加dockerd启动参数,/etc/docker/daemon.json

{"log-driver":"json-file",

"log-opts": {"max-size":"2G", "max-file":"10"}

26、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

原因:系统参数默认配置过小

解决方式:修改/etc/sysctl.conf里面的vm.max_map_count 调大

27、Got starting container process caused "process_linux.go:301:

running exec setns process for init caused \"exit status 40\"": unknown.

from time to time

原因:可能是cache问题引起

解决方式:echo 1 > /proc/sys/vm/drop_caches

28、docker本机启动多台容器导致出现后续容器启动失败

原因:查看硬盘空间是否满,如果不是硬盘空间问题引起

解决方式:

vim /etc/sysctl.conf

添加参数 fs.aio-max-nr = 1048576

sysctl -p

29、Docker启动异常,状态反复restarting

Docker logs 容器名,查看异常日志

查看/var/log/messages

原因:内存跑满,引起OOM

解决方式:释放内存后,再启动容器

五、版本不兼容报错

30、overlayfs: Can't delete file moved from base layer to newly created dir even on ext4

原因:Centos 提供的文件系统 XFS 和 Overlay 兼容问题导致,

解决方式:这个问题的修复在内核 4.4.6以上

31、docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:297: getting the final child's pid from pipe caused \"read init-p: connection reset by peer\"": unknown.

原因:Docker版本和操作系统版本不匹配

解决方式:重新安装和操作系统内核支持的docker 版本

六、网络或端口问题报错

32、WARNING: IPv4 forwarding is disabled. Networking will not work.

原因:ipv4网络无法转发

解决方式:

/usr/lib/sysctl.d/00-system.conf

在最后一行添加net.ipv4.ip_forward=1

重启network服务。删除错误的容器,再次创建新容器

33、Creating network "xxxxxxx" with the default driver

原因:docker网关冲突

启动容器、docker-compose启动容器后,断网问题

解决方式:配置 docker-compose.yml内给启动的容器配置参数network_mode: "bridge"

34、Unable to find a node that satisfies the following conditions [port xxxx]

原因:当容器使用端口映射(docker run -p xxxx:xxxx或 compose模板中的

ports)之后 系统会在宿主机上创建一个port,通过NAT来访问容器的指定port。如果宿主机上的端口被容器或者系统进程占用,就会导致端口分配失败。

解决方式:清除占用端口的容器或者进程,或调整容器端口映射的宿主机端口避免冲突

35、Error response from daemon: service endpoint with name xxx already

原因:端口已经被占用

解决方式:重启docker容器

36、docker: Error response from daemon: driver failed programming external connectivity on endpoint XXXXX: Bind for 0.0.0.0:80 failed: port is already allocated

原因:容器端口冲突

解决方式:更换宿主机绑定端口

七、Docker安装报错

37、安装docker报Requires: container-selinux >= 2.9

原因:container-selinux版本低或者是没安装的原因

解决方式:

wget -O /etc/yum.repos.d/CentOS-Base.repo

http://mirrors.aliyun.com/repo/Centos-7.repo

yum install epel-release

yum makecache

yum install container-selinux

38、安装docker-compose时报错

“ImportError: 'module' object has no attribute 'check_specifier'”

原因:setuptools版本问题

解决方式:

升级setuptools到30.1.0版本以上版本

pip install --upgrade setuptools

39、安装docker-compose时报错

DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.

原因:python2.7提示升级

解决方式:pip install -i https://pypi.douban.com/simple docker-compose

八、Docker删除报错

40、docker删除容器报错

Error response from daemon:Driver overlay failed to remove root filesystem xxxxx: remove/var/lib/docker/overlay2/xxxxx/merged: device or resource busy

原因:容器挂载数据卷,无法直接删除

解决方式:

grep docker /proc/*/mountinfo | grep xxxxx

kill进程后

再重新删除容器

41、状态dead的容器删除报错

Error response from daemon: Driver aufs failed to remove root filesystem XXXXXXXXXXXXXXXX: aufs: unmount error after retries: /var/lib/docker/aufs/mnt/xxxxxxxx: device or resource busy

原因:dead状态容器无法删除,还在占用资源

解决方式:docker rm -fv 容器id 过几分钟后会自动删除

42、docker删除镜像报错

Error response from daemon: conflict: unable to remove repository reference "XXXX" (must force) - container XXXX is using its referenced image YYYY

原因:镜像正在被某容器使用

解决方式:需要删除相关ID容器后,才能删除镜像

43、docker删除镜像报错

Error response from daemon: conflict: unable to delete XXXXXXXXXX (must be forced) - image is referenced in multiple repositories

原因:镜像login push 了远端其他仓库

解决方式:如果不需要此镜像, docker rmi -f 强删

44、docker删除镜像报错

Error response from daemon: conflict: unable to delete XXX (cannot be forced) - image has dependent child images

原因:存在依赖于父镜像的子镜像

解决方式:强制删除镜像或者批量删除容器,再删除镜像

九、其他报错

45、docker: Error response from daemon: driver failed programming external connectivity on end-point XXXXXXX: (iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 --dport 8080 -j ACCEPT: iptables: No chain/target/match by that name.

原因:防火墙问题引起

解决方式:关闭防火墙,重启docker

46、执行docker info出现如下警告

WARNING: bridge-nf-call-iptables is disabled

WARNING: bridge-nf-call-ip6tables is disabled

原因:配置问题引起,需要启用bridge-nf-call-iptables

解决方式:

vi /etc/sysctl.conf

添加以下内容

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-arptables = 1

47、docker数据库相关报错

使用Docker创建mysql容器闪退

Database is uninitialized and password option is not specified

解决方式:docker run -d -e MYSQL_ROOT_PASSWORD=[密码] -p 3306:3306 mysql镜像

为避免出现各种奇怪且偶发的问题,运维和开发人员应该有规范的去使用docker容器,最大程度的去避免因为使用不当而引起的故障,参考以下:

Docker使用规范建议

1.尽量使用最近1-2年的新的稳定的docker版本

不要去安装今年前很老的版本,大量的bug已经被新版本更新解决掉了

2.尽量不要去创建非常大的镜像,比如5G10G以上的

镜像要尽量轻量化,去除不必要的软件,数据等

3.容器内挂载宿主机配置,使用只读

容器需要-v 宿主机的配置文件,尽量使用ro只读

4.数据要挂载宿主机物理硬盘或存储节点上

不要直接在容器里run,避免容器宕机引起数据丢失

5.应用日志一定要挂到宿主机上

不要直接打印到容器内,避免只能docker logs方式查看,避免去vulume目录里查看日志

6.不要只使用latest标签

Tag要有个管理标准,可以根据tag查找对应版本

7.不要使用容器ip,配置里更不能写死(默认172.17.0.x)

容器重启后,ip很可能会变

8.尽量不要在单容器内跑多进程

容器不是虚拟机,尽量做到1个容器,1个进程

9.跨环境镜像保持一致

不论是测试,UAT,生产环境,尽量保持同一个镜像,不要变更,环境变更只需要变更环境变量参数做区分

10.一定监控docker容器,即使发现问题

建议使用prometheus监控容器

11.一定要限制docker容器的资源

尤其是CPU,内存,硬盘空间,甚至是网络等,避免侵占宿主机的硬件资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1033174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搭建自己的搜索引擎之二

一、前言 接上篇 搭建自己的搜索引擎之一 &#xff0c;本篇主要讲ElasticSearch单实例安装配置。 二、安装配置ElasticSearch ElasticSearch版本更新比较频繁&#xff0c;当前已经是8.0版本了&#xff0c;我这里安装的是7.1.1版本&#xff0c;其它版本详细说明可以查阅官方文…

Ae 效果:CC Force Motion Blur

时间/CC Force Motion Blur Time/CC Force Motion Blur CC Force Motion Blur &#xff08;CC 强制运动模糊&#xff09;主要用于为动态图像添加强制的运动模糊效果&#xff0c;增加动态画面的流畅感和真实感。 相对于时间轴面板上的“运动模糊”开关&#xff0c;CC Force Moti…

【2023年中国研究生数学建模竞赛华为杯】E题 出血性脑卒中临床智能诊疗建模 问题分析、数学模型及代码实现

【2023年中国研究生数学建模竞赛华为杯】E题 出血性脑卒中临床智能诊疗建模 1 题目 1.1 背景介绍 出血性脑卒中指非外伤性脑实质内血管破裂引起的脑出血&#xff0c;占全部脑卒中发病率的10-15%。其病因复杂&#xff0c;通常因脑动脉瘤破裂、脑动脉异常等因素&#xff0c;导致…

物联网、工业大数据平台 TDengine 与苍穹地理信息平台完成兼容互认证

当前&#xff0c;在政府、军事、城市规划、自然资源管理等领域&#xff0c;企业对地理信息的需求迅速增加&#xff0c;人们需要更有效地管理和分析地理数据&#xff0c;以进行决策和规划。在此背景下&#xff0c;“GIS 基础平台”应运而生&#xff0c;它通常指的是一个地理信息…

iOS——引用计数(一)

自动引用计数 自动引用计数&#xff08;ARC&#xff0c;Automatic Reference Counting&#xff09;是指内存管理中对引用采取自动计数的技术。 满足以下要求后&#xff0c;我们的代码就无需再次键入retain或者是release代码了&#xff1a; 使用Xcode 4.2或以上版本使用LLVM编…

【云原生】DevOps 环境搭建

本文使用 Gitlab&#xff0c;Jenkins&#xff0c;Docker&#xff0c;K8s&#xff0c;Harbor 实现CICD环境搭建 一、Gitlab环境部署 说明&#xff1a;内存尽量给多点&#xff08;2G以上&#xff09;&#xff0c;后面会安装一些软件&#xff0c;会占用内存 1.1、安装依赖软件 y…

MySQL作业1

目录 一.创建一张表&#xff0c;包含以下所有数据类型 建表&#xff1a;​编辑 二.使用以下六种约束 1.非空约束 2.唯一约束 3.主键约束 4.外键约束 5.检查约束 6.默认值约束 一.创建一张表&#xff0c;包含以下所有数据类型 Text 类型&#xff1a; Number 类型&#…

java框架-Springboot3-web开发

文章目录 自动配置默认效果WebMvcAutoConfigurationWebMvcConfigurer接口静态资源访问首页Favicon缓存 自定义静态资源路径1、配置方式2、代码方式 路径匹配规则内容协商默认支持json配置支持xml内容协商原理自定义支持ymal 模板引擎模板引擎Thymeleaf整合基础语法遍历判断属性…

网络爬虫——HTTP和HTTPS的请求与响应原理

目录 一、HTTP的请求与响应 二、浏览器发送HTTP请求的过程 三、HTTP请求方法 四、查看网页请求 五、常用的请求报头 六、服务端HTTP响应 七、常用的响应报头 八、Cookie 和 Session 九、响应状态码 十、网页的两种加载方法 十一、认识网页源码的构成 十二、爬虫协议…

IOTE 2023盛况回顾,美格智能聚连接之力促数字新生长

9月20~22日&#xff0c;IOTE国际物联网展深圳站在深圳国际会展中心正式召开。本届展会以“IoT构建数字经济底座”为主题&#xff0c;聚焦物联网技术助推数字经济发展的核心动力。美格智能携前沿技术成果亮相展会&#xff0c;与参展观众深入交流。 展会上&#xff0c;美格智能带…

Docker - 使用 Dockerfile 封装已有的 Docker Image

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/133170855 Dockerfile 是用来构建 Docker 镜像的文本文件&#xff0c;包含了一系列的指令和说明&#xff0c;用于描述如何从一个基础镜像开始&…

2023华为杯数学建模D题——碳排放路径优化基于指数分解法的LMDI 模型

LMDI 模型是基于指数分解法&#xff08;IDA&#xff09; 发展而成的一种因素分解法。LMDI模型在 Kaya 拓展式的基础上&#xff0c; 利用对数平均法对影响因素进行分析。 综合比较其他的指数分解方法&#xff0c; LMDI 分解法有着可完全分解因子、 无残差项等优势。根据对 Kaya …

Mysql数据库管理用户

Mysql数据库管理用户 一、管理用户1.1、用户创建1.2、 查看用户信息1.3 、重命名用户1.4、 删除用户1.5、 修改当前登录用户密码1.6、修改其他用户密码1.7、 忘记密码的解决办法 二、数据库用户授权2.1、 权限的授予2.2、 查看权限2.3、 撤销用户权限 一、管理用户 1.1、用户创…

搭建自己的搜索引擎之一

一、前言 关于搜索引擎自己接触的还算是比较多的&#xff0c;先简单回忆一下以前做过的事情&#xff0c;以前工作没有什么文档沉淀下来很多事情几乎都快忘差不多了&#xff0c;挺遗憾的。 1、10几年前在东奇软件做企业网站时玩过Lucene&#xff0c;当时中文分词还很弱&#xf…

ant design Pro中 initialState的使用方法

前言&#xff1a; initialState可以实现全局数据共享 基本使用&#xff1a; 在 umi 的运行时配置 src/app.tsx 中添加运行时配置 getInitialState &#xff0c;该配置是一个 async 的 function&#xff0c;示例如下&#xff1a; export async function getInitialState() {…

Crazy Excel:Excel中的泥石流

Crazy Excel又名&#xff1a;疯狂Excel。是一款PC端的Excel软件工具&#xff0c;该软件支持windows, mac os等主流操作系统。 正如其名&#xff0c;作者在设计之初就加入了一些疯狂的设计&#xff0c;目的是创作出更加好用有效的excel工具。 不管是专业还是小白&#xff0c;…

【校招VIP】产品逻辑考察之优先级

考点介绍&#xff1a; 如何定义需求的优先级是考察产品经理能力的方法之一。 定义产品需求的优先级是非常关键的&#xff0c;不然团队会不知道各项事务的轻重缓急&#xff0c;资源和精力都无法集中在最重要的目标上。 产品逻辑考察之优先级-相关题目及解析内容可点击文章末尾链…

TSINGSEE视频AI智能分析技术:水泥厂安全生产智能监管解决方案

一、方案背景 随着人工智能技术的快速发展以及视频监控系统在全国范围内的迅速推进&#xff0c;基于AI视频智能分析技术的智能视频监控与智慧监管系统&#xff0c;也已经成为当前行业的发展趋势。在工业制造与工业生产领域&#xff0c;工厂对设备的巡检管理、维护维修、资产管…

Spring Cloud Gateway快速入门(四)——gateway最最重要的功能!Gateway如何实现的服务匹配

文章目录 前言为什么要使用gateway进行服务的分配集中化的路由管理&#xff1a;动态路由的支持&#xff1a;请求过滤和处理&#xff1a;高性能和高可靠性&#xff1a; 1. 介绍2. 服务匹配的概念2.1 路由规则2.1.1 Predicate&#xff08;断言&#xff09;2.1.2 Filter&#xff0…

GC8837国产驱动芯片,可以替代TI的DRV8837C,具有 PWM(IN/IN)输入接口, 与行业标准器件兼容,并具有过温保护功能。

GC8837 是一款 12V 直流电机驱动芯片&#xff0c; 为摄像机、消费类产品、玩具和其他低压或 者电池供电的运动控制类应用提供了集成的 电机驱动解决方案。芯片一般用了驱动一个 直流电机或者使用两颗来驱动步进电机。可以工作在 0~12V 的电源电压 上&#xff0c;能提供高达 1.5…