美文网首页好文收藏
生产环境用Docker?先搞定这8个常见故障

生产环境用Docker?先搞定这8个常见故障

作者: gurlan | 来源:发表于2019-04-19 18:30 被阅读92次

    维护生产环境中的Docker虚拟化应用,高效、稳定的运行至关重要。

    但是,对于Docker的初学者而言,当容器或应用出现了问题,往往不知从何入手进行排查。

    — Docker虚拟化故障 —

    Docker虚拟化主要有三类故障:

    应用故障:应用执行状态与预期不一致。

    容器故障:无法正确创建、停止、更新容器等。

    集群故障:集群创建失败、更新失败、无法连接等。

    — Docker虚拟化故障排错 —

    所有的Docker虚拟化故障排查诊断,都可以通过Docker命令行工具或者Web控制台来完成。

    通过WEB控制台查看,需要自建控制台,对于Docker运维管理员来说,命令行工具排错是一个不错的帮手。

    — 故障排错案例1 —

    案例描述:

    生产环境,全新安装的Docker无法启动,报错信息如下:

    systemctl  start  docker.service
    

    通过journalctl -xe命令查看启动的详细日志,启动daemon错误,因为Selinux不支持,Selinux阻挡了Docker引擎的启动,如图所示:

    image.gif

    解决方案:

    如上问题,解决方法有两种:

    1.Selinux主配置文件:

    /etc/selinux/config,将配置文件中enforcing设置为disabled,然后重启系统,然后重启docker引擎即可。

    2.docker主配置文件:

    /etc/sysconfig/docker,将配置文件中--selinux-enabled选项为false,改成:--selinux-enabled=false即可。

    — 故障排错案例2 —

    案例描述:

    Docker虚拟化引擎报错信息如下:

    chown socket at step GROUP: No such process
    
    image

    解决方案:

    如上错误提示是因为Docker无法找到Group组信息,docker组有可能被误删除,解决方法有两种:

    1.创建宿主机docker组即可,命令:groupadd docker;

    2./usr/lib/systemd/system/docker.socket文件,SocketGroup=修改为root也可以;

    — 故障排错案例3 —

    案例描述:

    Docker虚拟化引擎报错信息如下:

    image

    如上错误提示是因为Linux操作系统没有更多的Loopback 设备给Docker使用。

    解决方案:

    创建更多的Loopback设备即可,命令如下:

    for i inseq 0 6;do mknod -m 0660 /dev/loop$i b 7 $i;done
    

    — 故障排错案例4 —

    案例描述:

    Docker命令执行,报错如下:

    Cannot connect to the Docker daemon at unix:
    

    根据如上错误提示,该错误很明显可能是docker没有启动。

    解决方案:

    检测docker进程是否启动,ps -ef|grep docker,如果没有启动,启动Docker即可。

    检测Docker进程存在,但是无法连接,可以重启一下Docker服务,检测一下Sock路径是否正确;

    image

    — 故障排错案例5 —

    案例描述:

    Docker获取远程镜像,报错信息如下:

    Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io
    
    image.gif

    该错误表示无法连接远程仓库Docker.io。

    解决方案:

    查看本地是否配置DNS,能否ping通docker.io;

    如果能够ping通,但是下载还是比较慢,可以修改Docker仓库源为国内或者自建的仓库源;

    Docker镜像修改方法,vim /etc/docker/daemon.json,执行如下命令:

    at>/etc/docker/daemon.json<<EOF
    {
    "registry-mirrors":["https://registry.docker-cn.com"]
    }
    EOF
    service docker restart
    

    — 故障排错案例6 —

    案例描述:

    启动Docker容器,报错信息如下:

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

    </pre>

    如上报错新,通常是由于容器启动时,不支持该命令:/bin/bash。

    解决方案:

    解决方法有如下两种:

    修改启动命令为正确的Docker容器启动命令,例如修改为:/bin/sh或者sleep 99999d等;

    Docker镜像自身问题或者Docker引擎版本比较低导致,可以升级Docker引擎版本服务;

    — 故障排错案例7 —

    案例描述:

    Docker虚拟化运行中,报错信息如下:

    Docker no space left on device
    

    如上错误,表示Docker虚拟化引擎平台,没有多月的空间设备所使用,证明容器磁盘不足或者物理机磁盘不足。

    解决方案:

    手工删除Docker容器占用数据比较大的目录;

    或者通过docker system prune自动删除一些日志目录,此种方法会停止所有容器;

    或者临时增加Docker存储硬盘等;

    — 故障排错案例8 —

    案例描述:

    Docker push上传镜像至本地仓库报错信息如下:

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

    根据如上错误提示,错误是由于客户端采用https,docker registry未采用https服务所致。一种处理方式是把客户对地址“106.12.133.186:5000”请求改为http。

    解决方案:

    vim /etc/docker/daemon.json 文件。
    

    保存退出后,重启docker服务,问题即可解决。

    相关文章

      网友评论

        本文标题:生产环境用Docker?先搞定这8个常见故障

        本文链接:https://www.haomeiwen.com/subject/uqvcgqtx.html