解決docker pull被復(fù)位出現(xiàn)的問題
本文介紹了解決docker pull被復(fù)位出現(xiàn)的問題,分享給大家,具體如下:
例如:
$ docker pull ubuntu:16.04 Trying to pull repository docker.io/library/ubuntu ... Get https://registry-1.docker.io/v2/library/ubuntu/manifests/sha256:dd7808d8792c9841d0b460122f1acf0a2dd1f56404f8d1e56298048885e45535: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fubuntu%3Apull&service=registry.docker.io: read tcp *.*.*.*:41348->50.17.62.194:443: read: connection reset by peer
原因:目測50.17.62.194被TCP重置。
解決方法:
1、找到其可用IP:
$ dig auth.docker.io ; <<>> DiG 9.10.4-P6-RedHat-9.10.4-4.P6.fc25 <<>> auth.docker.io ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7119 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;auth.docker.io. IN A ;; ANSWER SECTION: auth.docker.io. 60 IN A 34.193.147.40 auth.docker.io. 60 IN A 50.17.62.194 auth.docker.io. 60 IN A 52.5.246.212 ;; Query time: 130 msec ;; SERVER: *.*.*.*#53(.*.*.*.*) ;; WHEN: Tue Mar 07 11:03:29 CST 2017 ;; MSG SIZE rcvd: 91
2、改/etc/hosts強(qiáng)制docker.io相關(guān)的域名解析到其它可用IP:
# /etc/hosts 34.193.147.40 registry-1.docker.io auth.docker.io
順便附上關(guān)于鏡像的描述以及現(xiàn)在有哪些鏡像提供商
首先,需要明確一個(gè)問題:Mirror 與 Private Registry 有什么區(qū)別?
抄自daocloud的說明:
二者有著本質(zhì)的差別。
Private Registry 是開發(fā)者或者企業(yè)自建的鏡像存儲庫,通常用來保存企業(yè)內(nèi)部的 Docker 鏡像,用于內(nèi)部開發(fā)流程和產(chǎn)品的發(fā)布、版本控制。 Mirror 是一種代理中轉(zhuǎn)服務(wù),我們(指daocloud)提供的 Mirror 服務(wù),直接對接 Docker Hub 的官方 Registry。Docker Hub 上有數(shù)以十萬計(jì)的各類 Docker 鏡像。 在使用 Private Registry 時(shí),需要在 Docker Pull 或 Dockerfile 中直接鍵入 Private Registry 的地址,通常這樣會導(dǎo)致與 Private Registry 的綁定,缺乏靈活性。 使用 Mirror 服務(wù),只需要在 Docker 守護(hù)進(jìn)程(Daemon)的配置文件中加入 Mirror 參數(shù),即可在全局范圍內(nèi)透明的訪問官方的 Docker Hub,避免了對 Dockerfile 鏡像引用來源的修改。
簡單來說,Mirror類似CDN,本質(zhì)是官方的cache;Private Registry類似私服,跟官方?jīng)]什么關(guān)系。對我來說,由于我是要拖docker hub上的image,對應(yīng)的是Mirror。 yum/apt的mirror又有點(diǎn)不一樣,它其實(shí)是把官方的庫文件整個(gè)拖到自己的服務(wù)器上做鏡像(不管有沒有用),并定時(shí)與官方做同步;而Docker mirror只會緩存曾經(jīng)使用過的image。
目前國內(nèi)訪問docker hub非常便秘,使用docker mirror勢在必行?,F(xiàn)有提供服務(wù)的有三家:ustc、daocloud、aliyun,下面會一一介紹。
選擇零:網(wǎng)易163 docker鏡像
$ sudo echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://hub-mirror.c.163.com\"" >> /etc/default/docker $ service docker restart
一般來說,網(wǎng)易的豬肉比市場上的豬肉好吃。
選擇一:ustc的鏡像
ustc是老牌的linux鏡像服務(wù)提供者了,還在遙遠(yuǎn)的ubuntu 5.04版本的時(shí)候就在用。之前在blog里有提到可以用ustc的docker倉庫鏡像,使用方法參考ustc docker 鏡像使用幫助。
ustc的docker鏡像速度不錯(cuò),一直用的挺happy。但是今天發(fā)現(xiàn)不好使了,可能跟這件事有關(guān)系吧,今天嘗試去pull ubuntu,非常慢,應(yīng)該是直接去docker hub上去拉了,基本沒有加速效果。
ustc docker mirror的優(yōu)勢之一是,不需要注冊,公共服務(wù)(這才是我熟悉的ustc嘛)。
選擇二:daocloud
DaoCloud也提供了docker加速器,但是跟ustc不同,需要用戶注冊后才能使用,并且每月限制流量10GB。linux上使用比較簡單,一條命令搞定:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://{your_id}.m.daocloud.io
實(shí)際改的是/usr/lib/systemd/system/docker.service,加了個(gè)–registry-mirror參數(shù),:
ExecStart=/usr/bin/docker-current daemon --registry-mirror=http://{your_id}.m.daocloud.io\
設(shè)置后,需要重新加載配置&重啟:
systemctl enable docker; systemctl daemon-reload ; systemctl restart docker
但是!今天使用DaoCloud的docker加速器體驗(yàn)非常差,加速效果基本沒感覺,果斷放棄。
選擇三:alicloud
阿里云也提供了docker加速器,不過比ustc更麻煩:不光要注冊為阿里云的用戶,還得加入開發(fā)者平臺。不過捏著鼻子昨晚這些以后,它的服務(wù)還真是不錯(cuò),基本1MB/s的pull速度(部分原因可能是因?yàn)槲乙苍诤贾莅?。配置方法跟daocloud類似,也是開通加速器以后給一個(gè)url。
我直接去改/usr/lib/systemd/system/docker.service了:
ExecStart=/usr/bin/docker-current daemon --registry-mirror=https://{your_id}.mirror.aliyuncs.com\
重新加載配置&重啟:
systemctl enable docker; systemctl daemon-reload ; systemctl restart docker
pull的時(shí)候還是顯示docker.io,但速度一點(diǎn)都不docker.io。
# docker pull ubuntu Using default tag: latest Trying to pull repository docker.io/library/ubuntu ... latest: Pulling from docker.io/library/ubuntu cad964aed91d: Pull complete 3a80a22fea63: Pull complete 50de990d7957: Pull complete 61e032b8f2cb: Pull complete 9f03ce1741bf: Pull complete Digest: sha256:28d4c5234db8d5a634d5e621c363d900f8f241240ee0a6a978784c978fe9c737 Status: Downloaded newer image for docker.io/ubuntu:latest
綜上,雖然aliyun docker mirror有這樣那樣的不爽,但的確是目前最好的服務(wù)。當(dāng)然,等ustc恢復(fù)正常了,我還是會切到ustc的。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
docker compose入門helloworld的詳細(xì)過程
docker-compose是基于docker的,所以我們需要先安裝docker才能使用docker-compose,接下來通過本文給大家介紹docker compose入門helloworld的過程,一起看看吧2021-09-09idea使用docker生成鏡像(打包鏡像,導(dǎo)入鏡像,導(dǎo)出鏡像)
使用docker鏡像,可以快速地部署和運(yùn)行應(yīng)用程序,而無需擔(dān)心環(huán)境差異、依賴項(xiàng)問題等,本文主要介紹了idea使用docker生成鏡像,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02詳解利用nginx和docker實(shí)現(xiàn)一個(gè)簡易的負(fù)載均衡
本篇文章主要介紹了利用nginx和docker實(shí)現(xiàn)一個(gè)簡易的負(fù)載均衡 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06Docker創(chuàng)建一個(gè)mysql容器并保存為本地鏡像
本篇文章主要介紹了Docker創(chuàng)建一個(gè)mysql容器并保存為本地鏡像 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05docker中使用mysql數(shù)據(jù)庫實(shí)現(xiàn)局域網(wǎng)訪問
在本篇內(nèi)容里小編給大家整理了關(guān)于docker中使用mysql數(shù)據(jù)庫實(shí)現(xiàn)局域網(wǎng)訪問相關(guān)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2020-03-03Docker創(chuàng)建容器時(shí)目錄權(quán)限踩坑
這篇文章主要介紹了Docker創(chuàng)建容器時(shí)目錄權(quán)限踩坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Docker自定義網(wǎng)絡(luò)詳細(xì)介紹
大家好,本篇文章主要講的是Docker自定義網(wǎng)絡(luò)詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12