docker 推送失败:net/http:TLS 握手超时

docker push failed: net/http: TLS handshake timeout

当我使用 docker push 将我的图像推送到 docker 集线器时,我会得到这样的错误:

Post https://registry-1.docker.io/v2/lutaoact/docker-whale/blobs/uploads/: net/http: TLS handshake timeout

或:

Head https://registry-1.docker.io/v2/lutaoact/docker-whale/blobs/sha256:ce3756df5cd31626b2664e9ac3713eec2585a64b7b31350c963328137b6f391d: dial tcp 54.172.138.33:443: i/o timeout

可能 54.172.138.33 被屏蔽了。 我如何为 docker 设置代理来访问此 ip?

这个错误主要发生在我的网络不好的时候。检查您的互联网连接。它将解决问题。

同时创建一个 docker 注册表缓存:https://docs.docker.com/registry/recipes/mirror/

把docker镜像改成你本地的镜像,比如在中国,你可以用Azure镜像:

"registry-mirrors" : [
    "https://dockerhub.azk8s.cn"
  ]

像这样:

直到 2020-03 年,它都可以正常工作。

docker支持配置代理服务器,doc.

您可以设置环境变量HTTP_PROXYHTTPS_PROXY来设置代理。例如:

HTTP_PROXY=http://127.0.0.1:8123 docker pull hello-world
HTTPS_PROXY=https://127.0.0.1:8123 docker pull hello-world

您也可以编辑文件 ~/.docker/config.json 来配置代理:

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://127.0.0.1:3001",
     "httpsProxy": "http://127.0.0.1:3001",
     "noProxy": "*.test.example.com,.example2.com"
   }
 }
}