解决docker pull被复位出现的问题
本文介绍了解决dockerpull被复位出现的问题,分享给大家,具体如下:
例如:
$dockerpullubuntu:16.04 Tryingtopullrepositorydocker.io/library/ubuntu... Gethttps://registry-1.docker.io/v2/library/ubuntu/manifests/sha256:dd7808d8792c9841d0b460122f1acf0a2dd1f56404f8d1e56298048885e45535:Gethttps://auth.docker.io/token?scope=repository%3Alibrary%2Fubuntu%3Apull&service=registry.docker.io:readtcp*.*.*.*:41348->50.17.62.194:443:read:connectionresetbypeer
原因:目测50.17.62.194被TCP重置。
解决方法:
1、找到其可用IP:
$digauth.docker.io ;<<>>DiG9.10.4-P6-RedHat-9.10.4-4.P6.fc25<<>>auth.docker.io ;;globaloptions:+cmd ;;Gotanswer: ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:7119 ;;flags:qrrdra;QUERY:1,ANSWER:3,AUTHORITY:0,ADDITIONAL:1 ;;OPTPSEUDOSECTION: ;EDNS:version:0,flags:;udp:4096 ;;QUESTIONSECTION: ;auth.docker.io.INA ;;ANSWERSECTION: auth.docker.io.60INA34.193.147.40 auth.docker.io.60INA50.17.62.194 auth.docker.io.60INA52.5.246.212 ;;Querytime:130msec ;;SERVER:*.*.*.*#53(.*.*.*.*) ;;WHEN:TueMar0711:03:29CST2017 ;;MSGSIZErcvd:91
2、改/etc/hosts强制docker.io相关的域名解析到其它可用IP:
#/etc/hosts 34.193.147.40registry-1.docker.ioauth.docker.io
顺便附上关于镜像的描述以及现在有哪些镜像提供商
首先,需要明确一个问题:Mirror与PrivateRegistry有什么区别?
抄自daocloud的说明:
二者有着本质的差别。
PrivateRegistry是开发者或者企业自建的镜像存储库,通常用来保存企业内部的Docker镜像,用于内部开发流程和产品的发布、版本控制。Mirror是一种代理中转服务,我们(指daocloud)提供的Mirror服务,直接对接DockerHub的官方Registry。DockerHub上有数以十万计的各类Docker镜像。在使用PrivateRegistry时,需要在DockerPull或Dockerfile中直接键入PrivateRegistry的地址,通常这样会导致与PrivateRegistry的绑定,缺乏灵活性。使用Mirror服务,只需要在Docker守护进程(Daemon)的配置文件中加入Mirror参数,即可在全局范围内透明的访问官方的DockerHub,避免了对Dockerfile镜像引用来源的修改。
简单来说,Mirror类似CDN,本质是官方的cache;PrivateRegistry类似私服,跟官方没什么关系。对我来说,由于我是要拖dockerhub上的image,对应的是Mirror。yum/apt的mirror又有点不一样,它其实是把官方的库文件整个拖到自己的服务器上做镜像(不管有没有用),并定时与官方做同步;而Dockermirror只会缓存曾经使用过的image。
目前国内访问dockerhub非常便秘,使用dockermirror势在必行。现有提供服务的有三家:ustc、daocloud、aliyun,下面会一一介绍。
选择零:网易163docker镜像
$sudoecho"DOCKER_OPTS=\"\$DOCKER_OPTS--registry-mirror=http://hub-mirror.c.163.com\"">>/etc/default/docker $servicedockerrestart
一般来说,网易的猪肉比市场上的猪肉好吃。
选择一:ustc的镜像
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu5.04版本的时候就在用。之前在blog里有提到可以用ustc的docker仓库镜像,使用方法参考ustcdocker镜像使用帮助。
ustc的docker镜像速度不错,一直用的挺happy。但是今天发现不好使了,可能跟这件事有关系吧,今天尝试去pullubuntu,非常慢,应该是直接去dockerhub上去拉了,基本没有加速效果。
ustcdockermirror的优势之一是,不需要注册,公共服务(这才是我熟悉的ustc嘛)。
选择二:daocloud
DaoCloud也提供了docker加速器,但是跟ustc不同,需要用户注册后才能使用,并且每月限制流量10GB。linux上使用比较简单,一条命令搞定:
curl-sSLhttps://get.daocloud.io/daotools/set_mirror.sh|sh-shttp://{your_id}.m.daocloud.io
实际改的是/usr/lib/systemd/system/docker.service,加了个–registry-mirror参数,:
ExecStart=/usr/bin/docker-currentdaemon--registry-mirror=http://{your_id}.m.daocloud.io\
设置后,需要重新加载配置&重启:
systemctlenabledocker;systemctldaemon-reload;systemctlrestartdocker
但是!今天使用DaoCloud的docker加速器体验非常差,加速效果基本没感觉,果断放弃。
选择三:alicloud
阿里云也提供了docker加速器,不过比ustc更麻烦:不光要注册为阿里云的用户,还得加入开发者平台。不过捏着鼻子昨晚这些以后,它的服务还真是不错,基本1MB/s的pull速度(部分原因可能是因为我也在杭州吧)。配置方法跟daocloud类似,也是开通加速器以后给一个url。
我直接去改/usr/lib/systemd/system/docker.service了:
ExecStart=/usr/bin/docker-currentdaemon--registry-mirror=https://{your_id}.mirror.aliyuncs.com\
重新加载配置&重启:
systemctlenabledocker;systemctldaemon-reload;systemctlrestartdocker
pull的时候还是显示docker.io,但速度一点都不docker.io。
#dockerpullubuntu Usingdefaulttag:latest Tryingtopullrepositorydocker.io/library/ubuntu... latest:Pullingfromdocker.io/library/ubuntu cad964aed91d:Pullcomplete 3a80a22fea63:Pullcomplete 50de990d7957:Pullcomplete 61e032b8f2cb:Pullcomplete 9f03ce1741bf:Pullcomplete Digest:sha256:28d4c5234db8d5a634d5e621c363d900f8f241240ee0a6a978784c978fe9c737 Status:Downloadednewerimagefordocker.io/ubuntu:latest
综上,虽然aliyundockermirror有这样那样的不爽,但的确是目前最好的服务。当然,等ustc恢复正常了,我还是会切到ustc的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。