栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker故障大全

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker故障大全

docker故障大全
  • 故障记录

持续记录中…
更新时间:2022-05-16

故障记录

1、docker pull和docker run无镜像和容器

docker pull 以及docker run,看不到下载下来的镜像和启动的容器,但是去到/var/lib/docker目录下,又有对应的镜像和容器层。

故障原因

/var/lib/docker挂载的时间比dockerd启动时间更晚,dockerd使用docker pull和docker run命令使用的是未挂载/var/lib/docker的docker目录,而非现在挂载以后的/var/lib/docker

解决方法

dockerd启动要在挂载/var/lib/docker之后

2、docker-proxy僵尸

在其他容器中使用curl命令连接仓库镜像,无法curl通,但是在主机上使用curl命令连接仓库镜像可以curl通。原因是docker-proxy僵尸了。

故障原因

docker-proxy僵尸是由于kill -9 docker-proxy,直接杀死docker-proxy,但是dockerd在启动docker-proxy阶段没有使用wait方法等待子进程退出,dockerd无法回收docker-proxy。dockerd在stop阶段做了wait方法等待,可以在stop容器以后回收僵尸的docker-proxy。

对应的函数为

func (p *proxyCommand) Start() error {
...
}
func (p *proxyCommand) Stop() error {
...
	go func() {
			waitChan <- p.cmd.Wait()
		}()
...
}

解决方法

使用docker restart容器(会调用docker stop容器,dockerd会回收该容器僵尸掉的docker-proxy【】),重新拉起容器即可。

3、k8s拉起容器名字冲突,无法成功拉起容器

拉起容器名字冲突,环境上存在大量Created状态容器,且未被清理。

故障原因

环境上存在14000多个Created状态的容器,k8s没有及时清理,docker日志中报错“清理失败,不存在该容器”。手动删除容器可以成功。

原因是环境的SSD固态硬盘没有挂载成功,docker运行在机械硬盘上,io速度太慢,导致k8s侧拉起容器超时,反复不停拉起容器。

解决方法

及时清理Created状态容器。如需要高并发,则挂载SSD固态硬盘提高系统io性能。

4、docker push镜像失败

push镜像失败,显示HTTP:500报错

故障原因

1、push镜像失败是由于镜像仓库配置的网络异常。报错received unexpected HTTP status: 500 Internal Server Error

2、docker日志中同样报错structure needs cleaning。表示文件系统故障。

自从报错structure needs cleaning文件系统故障以后,push镜像就一直不成功。

3、仓库容器registry为running状态。

4、查看registry容器日志,发现仓库容器报错ext4_find_dest_de:1815: inode #1181179: block 4727562: comm registry: bad entry in directory: rec_len % 4 != 0 - offset=0, inode=3671195736, rec_len=19238, name_len=228, size=4096。表示文件系统故障

故障原因为文件系统故障

解决方法

修复文件系统

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/890221.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号