问题
本地的docker镜像push到云容器中时,无法push,显示 Get https://registry-vpc.cn-shanghai.aliyuncs.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
遇到该问题,有一两个相关的,都是修改DNS,见
【docker-issues 2956:request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers】
-
Win下修改方法:
Go to Docker settings > network > DNS server . change from automaic to fixed ( default is 8.8.8.8 ) -
Mac下修改方法:
docker 图标 -> Preferences -> Daemon -> Advanced, 删除其中关于DNS的配置。DNS的配置类似于这样的:"dns": ["8.8.8.8", "192.168.0.1"]
Solution
提交其他进镜像时,能够上传成功,所以能排除DNS配置的问题。
后来重新打开镜像路径,发现镜像路径的公网地址有几个字母错了😂,本来应该是registry.cn-shanghai.aliyuncs.com/docker_for_donald/
,而实际上传时写的是registry-vpc.cn-shanghai.aliyuncs.com
。
重新修改路径后问题解决了。
路径太长,难免会走一些捷径,复用之前已经使用过的命令,突然想到了一个笑话:程序员想输入ls
命令,但没有选择键入,而是使用上下键一个个翻之前的命令,能用一个手指解决的绝不用两个手指,自己这里也是。。。。长记性了
Other – 参考
- 【stackoverflow – How do I configure which DNS server docker uses in Docker Desktop for Mac?】
- 【docker-issues 2956:request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers】
docker 上传镜像常用的几个命令:
docker login
:登录Docker Registry- 如:docker login --username=donaldsu5 registry.cn-shanghai.aliyuncs.com
docker build
:使用 Dockerfile 创建镜像- docker build -t registry.cn-shanghai.aliyuncs.com/docker_for_donald/docker_for_adversarial_text:0.2
docker run
:通过镜像创建一个新的容器并运行一个命令- eg: docker run registry.cn-shanghai.aliyuncs.com/docker_for_donald/docker_for_adversarial_text sh run.sh
docker pull
:从镜像仓库中拉取或者更新指定镜像- docker push registry-vpc.cn-shanghai.aliyuncs.com/docker_for_donald/docker_for_adversarial_text:0.1
docker images
:列出本地镜像
更多docker命令可参考:【Docker命令速查 – from 天池】