我创建了一个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
知道怎么绕过那个?
答案 0 :(得分:22)
答案 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上随机重现:
如果您收到此错误且未被代理阻止,请执行以下步骤:
重启docker-machine
docker-machine restart default
重置为默认环境
eval $(docker-machine env default)
如果你再试一次,你可能会发现一切正常。
答案 3 :(得分:3)
我在赢得10专业版时遇到了同样的问题。两次更改后,我就可以登录并提取图像。
如果要使用Linux作为容器。 (您的机器必须有一个 登录密码)
右键单击docker whale图标,然后->切换到Linux容器。
转到“设置”,单击共享驱动器,然后选择D或C或两者。
输入Windows用户密码并保存更改。
答案 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)
答案 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中,我单击Proxies并添加了我公司代理的(实际)地址:
还要注意,我当时是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定义一个网关。这为我解决了问题。