項目場景:
在ubuntu中,使用docker拉去鏡像時,一直超時,拉去失敗。
問題描述
原因分析:
國外服務器網絡不好導致。
解決方案:
解決方案1 設置國內源
我這邊測試,更改以后仍然失敗
阿里云提供了鏡像源:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 登錄后你會獲得一個專屬的地址
使用命令設置國內鏡像源:通過vim /etc/docker/daemon.json 進入修改添加 registry-mirrors 內容后重啟 Docker
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://***替換為你的地址***.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
此命令會創建一個 /etc/docker/daemon.json 文件,并將國內源的配置寫入其中。然后你只需要重啟 Docker 服務即可使配置生效,可以通過運行 sudo systemctl restart docker 命令來重啟 Docker 服務。
解決方案2 配置加速地址(推薦)
1 配置加速地址:適用于Ubuntu 16.04+、Debian 8+、CentOS 7+
方式一:使用以下命令設置registry mirror:但是需要重啟docker服務
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
檢查加速是否生效:
查看docker系統信息 docker info,如果從輸出結果中看到了 registry mirror 剛配置的內容地址,說明配置成功。
方式二:如果您當前有正在運行的容器不方便重啟Docker服務,則不用設置環境也可以直接使用,用法示例:
docker pull do.nark.eu.org/library/mysql:5.7
2 第三方鏡像
AtomHub 可信鏡像中心 - 大部分需要的鏡像都是有的。
可信鏡像中心官網:https://atomhub.openatom.cn/
通過搜索需要的鏡像名稱,進行pull拉取,用法示例:
docker pull atomhub.openatom.cn/amd64/redis:7.0.13
注意:docker compose 中要執行部署時,可以把版本與 atomhub 提供的版本匹配上,之后通過【拉取命令】進行單獨拉取后,在執行 docker compose 就可以了。
加速代理站點:
專門為Github用戶提供下載加速服務的代理站點。由于Github的下載速度在某些地區可能會受到限制,導致開發者在獲取代碼庫、項目文件等資源時遇到困難。該代理站點通過優化的網絡節點和高速服務器,為用戶提供快速、穩定的Github資源下載服務。
站點地址:https://docker.888666222.xyz/
第一步:為了加速鏡像拉取,你可以使用以下命令設置 registry mirror:sudo tee /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://docker.888666222.xyz"]
}
EOF
第二步:為了避免 Worker 用量耗盡,你可以手動 pull 鏡像然后 re-tag 之后 push 至本地鏡像倉庫:docker pull docker.888666222.xyz/library/alpine:latest # 拉取 library 鏡像
docker pull docker.888666222.xyz/coredns/coredns:latest # 拉取 coredns 鏡像
解決方案3 使用代理拉取鏡像
第一步:創建配置文件
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf第二步:在文件中添加代理
[Service]
Environment="HTTP_PROXY=socks5://user:pass@127.0.0.1:1080"
Environment="HTTPS_PROXY=socks5://user:pass@127.0.0.1:1080"第三步:重啟Docker
sudo systemctl daemon-reload
sudo systemctl restart docker第四步:查看環境變量
sudo systemctl show --property=Environment docker
解決方案4 備用辦法:直接傳送鏡像
國外服務器拉取鏡像后打包壓縮到本地,然后傳輸到國內服務器,myimage為鏡像名
第一步:A服務器保存Docker鏡像
docker save myimage > myimage.tar第二步:傳送到B服務器
scp myimage.tar root@192.0.2.0:/home
然后輸入B服務器root密碼第三步:B服務器加載Docker鏡像
cd /home
docker load < myimage.tar第四步:查看鏡像
docker images
目前可用的鏡像代理:
拉取 pull 鏡像時,遇到不可用、關停、訪問比較慢的狀態,建議同時配置多個鏡像源。
供應商 | 地址 |
---|---|
DaoCloud | https://docker.m.daocloud.io |
阿里云 | https://<your_code>.mirror.aliyuncs.com |
Docker鏡像代理 | https://dockerproxy.com |
百度云 | https://mirror.baidubce.com |
南京大學 | https://docker.nju.edu.cn |
中科院 | https://mirror.iscas.ac.cn |
小福利:
近期 Rainbond 社區為了方便拉取 Docker 鏡像,自主搭建了個鏡像加速服務,采用 CloudFlare + 國外服務器 Nginx 反代的方案為 Rainbond 社區的用戶們提供鏡像加速服務。
方式一:直接獲取 Docker Hub 鏡像
docker pull docker.rainbond.cc/library/node:20
docker pull docker.rainbond.cc/rainbond/rainbond:v5.17.2-release-allinone方式二:配置鏡像加速器
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.rainbond.cc"]
}
EOF
systemctl daemon-reload
systemctl restart docker技術棧參考LINK
https://www.rainbond.com/docs/quick-start/quick-install
解決辦法千萬條:
面對問題時,解決的途徑和方法是多種多樣的。每個人、每個團隊在面對問題時,都可以根據自身的情況和資源,創造性地找到最適合自己的解決辦法。
Docker Hub 鏡像加速: https://gitee.com/wanfeng789/docker-hub
國內無法訪問下載Docker鏡像的多種解決方案:https://www.bilibili.com/read/cv35387254/
總結目前國內加速拉取 docker 鏡像的幾種方法:https://zhuanlan.zhihu.com/p/703322576
從Docker Hub拉取鏡像受阻?這些解決方案幫你輕松應對:https://mp.weixin.qq.com/s/pXrxedldKOoD97bMDYy3pQ
參考鏈接
[1]從Docker拉取鏡像一直失敗超時?這些解決方案幫你解決煩惱