🏓我们有时候虽然配置了Docker国内镜像源,但是还是会绕过去请求官方镜像源(docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded),现在我们就来解决一下,这是其中的一个解决方案,仅供参考:
1、先诊断一下网络有没有问题,一般是不会有问题的
ping -c 3 8.8.8.8 # 测试基本互联网连接nslookup registry-1.docker.io # 测试Docker Hub域名解析curl -I --connect-timeout 10 https://registry-1.docker.io/v2/ # HTTP连接测试
2、分析现有的Docker配置
cat /etc/docker/daemon.json
这个镜像源是免费的,也比较稳定,大家可以试试:https://docker.xuanyuan.me/
🧨我们在daemon.json中做了如下配置:
{"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com","https://mirror.ccs.tencentyun.com","https://ccr.ccs.tencentyun.com"],"dns": ["8.8.8.8", "114.114.114.114"], # 添加DNS配置# 优化并发设置"max-concurrent-downloads": 10,"max-concurrent-uploads": 5
}
3、测试验证
# 加载配置文件
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker# 验证配置生效
docker info | grep -A 5 "Registry Mirrors"# 最终功能测试
timeout 30 docker run hello-world
✨到这里如果有以下输出,就表示更换镜像源已经完成了!
Hello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://cloud.docker.com/For more examples and ideas, visit:https://docs.docker.com/engine/userguide/