解決docker pull鏡像報錯的問題

描述:

在win10下安裝VM,在VM裡運行docker,使用docker pull拉取鏡像時報錯

一、

Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

原因:

使用docker pull 命令拉取鏡像時,如果不添加額外的信息如docker pull nginx,則會默認鏡像拉取地址為國外倉庫,導致DNS解析超時。

解決辦法:

1.)修改VM默認的DNS為8.8.8.8

2.)使用國內的鏡像倉庫拉取鏡像

二、

Trying to pull repository docker.io/library/nginx … Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout

原因:

也是因為使用國外地址,導致http握手失敗。

解決辦法:

1.)每次拉取鏡像時都手動指定國內倉庫地址docker pull registry.docker-cn.com/library/nginx

2.)修改 /etc/docker/daemon.json 文件(把默認倉庫地址修改為國內地址,省去每次都手動輸入)

vim /etc/docker/daemon.json -> 寫入
{ "registry-mirrors": ["https://registry.docker-cn.com"] }

最後,重啟docker即可systemctl daemon-reload + systemctl restart docker

三、吐槽一下CSDN的markdown是真心難用,很多語法都不支持。

補充:解決docker pull鏡像報錯或者超時的方案,將拉取地址改為國內鏡像倉庫

docker默認鏡像拉取地址為國外倉庫下載速度較慢,甚至會報如下這種錯誤

Error response from daemon: Get https://docker.elastic.co/v2/: net/http: TLS handshake timeout

解決方法修改

/etc/docker/daemon.json 文件並添加上 registry-mirrors 鍵值。然後重啟docker就可以瞭
{
 "registry-mirrors": ["https://registry.docker-cn.com"]
}

補充:解決docker在CentOS7下不能下載鏡像timeout的問題

問題

昨天買瞭六個月阿裡雲服務器的學生機用來部署畢設環境,在鼓搗docker的時候出現問題,docker安裝成功並且已經成功啟動,如圖

但在pull鏡像的時候卻出現超時無法下載鏡像的問題,估計是國內docker官方鏡像被墻瞭,網上找瞭好久發現要使用國內鏡像加速,推薦的有Daocloud和阿裡雲,我使用的是Daocloud鏡像加速,註冊瞭賬號之後上方會有一個鏡像加速的超鏈接

點進去之後還有各種系統的腳本,用於添加國內鏡像加速

運行腳本之後再執行pull操作,鏡像成功下載

這時候執行docker images可以看到已下載的鏡像

做個記錄,以免時間久瞭會遺忘

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。