修复docker pull image failed

docker pull报错

message":"Get https://n6-026-137.byted.org/v1/_ping: Not Found"},"error":"Get https://n6-026-137.byted.org/v1/_ping: Not Found

排查

打开docker的调试开关,给dockerd的启动参数中加入-D参数:

vi /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -D -H unix:///var/run/docker.sock -g="/opt/docker" 

dockerd 的日志(docker pull/push的日志)会记录到/var/log/daemon.log中,再次触发错误之后,在daemon.log中没有找到更多有用的信息:

Dec 1 17:12:13 n6-026-137 dockerd[138149]: time="2016-12-01T17:12:13.537485265+08:00" level=error msg="Attempting next endpoint for push after error: Get https://sandbox.hub.byted.org/v1/_ping: Not Found"

因为这个是测试服务器,dockerd上通过的信息并不多,直接strace docker的进程,找到出错的原因:

ERR_DNS_FAIL

strace -ff -s256 -p 138149 2>&1 |awk '{print $0}' > a.out
[pid 191579] <... read resumed> "HTTP/1.0 404 Not Found\r\nServer: squid/3.1.20\r\nMime-Version: 1.0\r\nDate: Thu, 01 Dec
    2016 09:14:36 GMT\r\nContent-Type: text/html\r\nContent-Length: 3281\r\nX-Squid-Error: ERR_DNS_FAIL 0\r\nVary: Accept-Lang
    uage\r\nContent-Language: en\r\n\r\n<!DOCTYPE html PUBLIC \"-//W3C"..., 4096) = 3508

原因

因为golang有自己的 pure go resolver 实现,该版本实现有以下特点:

  1. 默认情况下会直接查询 DNS 服务器, 不会使用本机 nscd DNS缓存;
  2. 它会拒绝DNS回复内容超过512bytes的回报;

通过设置环境变量 GODEBUG=netdns=cgo 启动,在运行时强制使用系统 resolver,可以提高DNS响应速度,减少DNS服务器压力,不会拒绝大于512bytes的回报;

修改

添加一下环境变量后,重启go服务(dockerd服务):

GODEBUG=netdns=cgo

ref

https://github.com/docker/docker/issues/18842

修复docker pull image failed的更多相关文章

  1. docker pull报错failed to register layer: Error processing tar file(exit status 1): open permission denied

    近来在一个云主机上操作docker pull,报错如下: failed to register layer: Error processing ): open /etc/init.d/hwclock. ...

  2. docker pull 时报错Create more free space in thin pool or use dm.min_free_space option to change behavior

    docker pull 时报错: failed to register layer: devmapper: Thin Pool has 107394 free data blocks which is ...

  3. 透过proxy进行docker pull(Centos6.8)

    由于必须通过proxy代理上网. 使用docker pull时一直出现如下错误: [root@centoo65 ~]# sudo HTTP_PROXY=http://186.100.4.107:808 ...

  4. 怎么解决docker pull拉取镜像速度过慢的问题

    在我们安装了docker之后,在利用docker pull下载镜像的时候,由于国内的源会出现的问题就是速度真的很慢,可以用龟速来形容,最痛苦的是当你耐心的等待几个小时之后,出现unexpected E ...

  5. docker pull 镜像报错

    [root@localhost ~]# docker pull ningx Using default tag: latest Trying to pull repository docker.io/ ...

  6. Docker pull下来的镜像(2)

    1.通过docker pull ubuntu:12.04 命令拉取镜像,ll发现当前目录并没有什么变化. 2.切换到docker目录 [root@iZwz9fedjw2xvy6fvxfnxgZ zxy ...

  7. CentOS7下 让Docker pull命令使用squid做http代理拉取目标镜像仓库的镜像

    场景,如下图所示: 服务器B具有两个网卡,分别和服务器A和服务器C互通,这里想要在服务器C上借助服务器B作为桥梁,拉取镜像仓库服务器A上的镜像. 思路也很简单,在服务器上搭建HTTP代理服务,服务器C ...

  8. 解决: docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest

    直接获取 rpm文件 wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.1 ...

  9. 1. docker 在 macOS 中的架构 2. 在macOS系统中,docker pull 下来的镜像存储在哪里?

    docker 在 macOS 中的架构: 在macOS中,docker的实现跟在其它Linux系统中略有不同,在其它Linux系统中,操作系统本身就是docker容器的宿主机,docker镜像都是直接 ...

随机推荐

  1. cordova使用Gradle构建下载maven太慢,使用阿里云镜像

    修改build.gradle: buildscript { repositories { maven{ url 'http://maven.aliyun.com/nexus/content/group ...

  2. PDO的一些操作

    一.实例化一个PDO对象 //实例化一个PDO对象//1,设置数据源相关参数$dbms = 'mysql';$host = '127.0.0.1';$port = '3306';$dbname = ' ...

  3. Java注解详解

    Java1.5引入了注解,注解作为程序的元数据嵌入到程序中.注解可以被一些解析工具或者编译工具进行解析.我们也可以声明注解在编译过程或者执行时产生作用. 创建Java自定义注解: package co ...

  4. Js动态获取iframe子页面的高度////////////////////////zzzz

    Js动态获取iframe子页面的高度   Js动态获取iframe子页面的高度总结 问题的缘由 产品有个评论列表引用的是个iframe,高度不固定于是引发这个总结. 方法1:父级页面获取子级页面的高度 ...

  5. [C#开发小技巧]解决WinForm控件TabControl闪烁问题

    在用C#开发WinForm程序时,常发现TabControl出现严重的闪烁问题,这主要是由于TabControl控件在实现时会绘制默认的窗口背景.其实以下一段简单的代码可以有效的缓解该问题的发生.这就 ...

  6. JS字符串替换函数:Replace(“字符串1″, “字符串2″),

    JS字符串替换函数:Replace(“字符串1″, “字符串2″), 1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉, ...

  7. 关于在linux中使用图形界面的网络管理工具

    有好几种自动设置的工具可以选择(既然说是自动设置的工具,那就说明有手动设置的工具,例如 使用 ip, iw, iwconfig 这些命令设置网络),例如:Connman, netctl, Networ ...

  8. SSM——(二):easyUI的CRUD

    1.在WebContent下新建admin目录,添加index.html(用来显示user表的CRUD): 总结: 1.datagrid接收的必须是json数据: 2.使用分页插件会自动向后台传递St ...

  9. iframe载入页面过程显示动画效果

    http://www.xfeixiang.com/Bug/Detail/A2FD7EFFA8CA72F1

  10. QFile QDataStream QTextStream

    #include <QCoreApplication> #include <QMap> #include <QFile> #include <QDir> ...