连接到Docker集线器时出错

时间:2016-12-21 12:14:59

标签: docker

我创建了一个docker hub帐户并尝试连接它以推送图像。我收到以下错误:

>>>docker login -u <username> -p <password>

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

我运行这个,我收到以下消息:

>>>curl https://registry-1.docker.io/v2/
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}

此外:

>>> env | grep -i proxy

没有结果(意味着我没有代理设置?)

>>> docker version
Client:
Version:      1.12.3
API version:  1.24
Go version:   go1.6.3
Git commit:   6b644ec
Built:        Wed Oct 26 22:01:48 2016
OS/Arch:      linux/amd64

Server:
Version:      1.12.3
API version:  1.24
Go version:   go1.6.3
Git commit:   6b644ec
Built:        Wed Oct 26 22:01:48 2016
OS/Arch:      linux/amd64

知道怎么绕过那个?

16 个答案:

答案 0 :(得分:22)

修改后的DNS服务器设置为8.8.8.8并且有效。

enter image description here

答案 1 :(得分:16)

就我而言(Ubuntu 16.04,Docker 18.01.0),我可以通过设置如下代理来解决它。

$ sudo mkdir -p /etc/systemd/system/docker.service.d
$ sudo vi /etc/systemd/system/docker.service.d/http_proxy.conf
[Service]
Environment="HTTP_PROXY=http://<your_proxy_ip>:<your_proxy_port>/"
$ sudo vi /etc/systemd/system/docker.service.d/https_proxy.conf
[Service]
Environment="HTTPS_PROXY=http://<your_proxy_ip>:<your_proxy_port>/"
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

答案 2 :(得分:4)

此问题有时会在docker上随机重现:

如果您收到此错误且未被代理阻止,请执行以下步骤:

  1. 重启docker-machine

    docker-machine restart default
    
  2. 重置为默认环境

    eval $(docker-machine env default)
    
  3. 如果你再试一次,你可能会发现一切正常。

答案 3 :(得分:3)

我在赢得10专业版时遇到了同样的问题。两次更改后,我就可以登录并提取图像。

  1. 如果要使用Windows作为容器。右键单击docker whale图标,然后->切换到Windows容器。

windows as container

  1. 如果要使用Linux作为容器。 (您的机器必须有一个 登录密码)

    • 右键单击docker whale图标,然后->切换到Linux容器。

    • 转到“设置”,单击共享驱动器,然后选择D或C或两者。

    • 输入Windows用户密码并保存更改。

linux as container

答案 4 :(得分:1)

我有同样的问题然后通过配置docker环境http_proxy来解决问题,因为我在公司代理后面: https://docs.docker.com/engine/admin/systemd/#http-proxy

答案 5 :(得分:1)

我有同样的问题。我的解决方案是指定正确的存储库参数。我在hub.docker.com注册了。所以我把它作为参数添加到docker login命令:

docker login -u username -p password hub.docker.com

如果仍有错误,请使用以下命令检查代理是否存在网络问题:

curl -I -x PROXY_USERID:PROXY_PASSWORD @ YOUR_PROXY:PROXY_PORT http://google.com

我也使用ip地址而不是主机名来指定我的代理来排除DNS错误。

如果curl出错,则需要配置docker http_proxy和https_proxy。

答案 6 :(得分:1)

Mac High Sierra / Docker 18:

在我的情况下,我必须注销我的Docker用户(直接在Docker菜单中)。

答案 7 :(得分:1)

Docker 18 / Windows 10:

在设置&gt;网络&gt; DNS服务器 - 选择已修复并输入您的DNS服务器IP。

答案 8 :(得分:1)

在Docker设置->网络中,我将DNS服务器设置切换为“固定”,如下面的屏幕截图所示,并且有效!

enter image description here

答案 9 :(得分:1)

如果您使用的是Linux。您可以在nameserver中更改/etc/resolv.conf。 将名称服务器设置为8.8.8.8。 重新启动Docker恶魔。 sudo systemctl restart docker

答案 10 :(得分:0)

在Linux(Ubuntu)中

  • 编辑网络接口

    nano /etc/network/interfaces
    
  • 将dns-nameservers some_ip_address替换为dns-nameservers 8.8.8.8

    dns-nameservers 8.8.8.8
    
  • 重新启动网络

    sudo systemctl restart networking
    
  

注意:如果是谷歌dns(dns-nameservers 8.8.8.8   )无法使用open dns(dns-nameservers 208.67.222.222)

答案 11 :(得分:0)

我遇到了同样的问题,我刚刚重新启动了docker服务,它对我来说很好用

$ sudo服务docker restart

$ docker登录

答案 12 :(得分:0)

打开docker whale图标并重新启动docker。

答案 13 :(得分:0)

我刚刚从Mac切换到公司的Windows 10计算机,因此进入Docker GUI并不明显,我必须展开carret(“ ^”),然后右键单击Docker图标:

Docker GUI

我在右键菜单中选择“设置”以打开Docker GUI。在Docker GUI中,我单击Proxies并添加了我公司代理的(实际)地址:

Docker Proxy

还要注意,我当时是able to login to our internal repository and Docker Hub,所以我可以从两个地方提取图像-这样我的config.json文件看起来(是这样):

{
  "auths": {
    "company.internal.rep.com:9000": {},
    "https://index.docker.io/v1/": {}
  },
  "HttpHeaders": {
    "User-Agent": "Docker-Client/18.09.2 (windows)"
  },
  "credsStore": "wincred"
}

答案 14 :(得分:0)

我的设置中没有代理,因此可以通过简单的docker restart来解决。可以通过cli或gui

轻松完成

答案 15 :(得分:0)

在主机操作系统的网络配置中,为docker适配器定义一个标准网关,为DNS定义一个网关。这为我解决了问题。