docker:来自守护程序的错误响应:获取https://registry-1.docker.io/v2/:服务不可用。在DOCKER,MAC

时间:2018-03-20 14:44:07

标签: docker docker-proxy

我在Mac系统10.11.6中遇到此问题

system3:postgres saurabh-gupta2$ docker build -t postgres .
Sending build context to Docker daemon  38.91kB
Step 1/51 : FROM registry.access.redhat.com/rhel7/rhel
Get https://registry.access.redhat.com/v2/: Service Unavailable
docker run  -t apline 
Unable to find image 'apline:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: Service Unavailable.
See 'docker run --help'.

我已经找到了设置代理的解决方案,但我已经为wifi设置了代理。

https://docs.docker.com/docker-for-mac/networking/#httphttps-proxy-support

仍然没有用。

我已将docker的代理设置为。它不起作用。

偏好中的

- >代理

Docker版本17.12 ce

我还想知道代理是否有问题,如何检查它是否已设置,有什么解决方法?我走错路吗?

修改

每个答案都有帮助,所以分享你如何解决这个问题。

24 个答案:

答案 0 :(得分:11)

以下是一些建议:

  1. 尝试重新启动Docker服务。
  2. 检查您的网络连接。例如,通过以下shell命令:

    </dev/tcp/registry-1.docker.io/443 && echo Works || echo Problem
    curl https://registry-1.docker.io/v2/ && echo Works || echo Problem
    
  3. 检查proxy settings(例如/etc/default/docker)。

  4. 如果上面没有帮助,这可能是Docker服务的临时问题(根据服务不可用)。

    相关:GH-842 - 503 Service Unavailable at http://hub.docker.com

    过去几天我遇到了这个问题,之后就开始工作了。

    您可以考虑在docker/hub-feedback repo处提出问题,检查,Docker Community Forums或直接与Docker Support联系。

答案 1 :(得分:4)

对我来说,我第一次安装Docker并运行

时遇到了这个问题
docker run hello-world

我在运行时收到需要验证的错误

$ curl https://registry-1.docker.io/v2/ && echo Works

我要做的就是重新启动MacOS,然后再次运行命令,它刚开始拉取映像,我得到了消息

Hello from Docker!
This message shows that your installation appears to be working correctly.

答案 2 :(得分:3)

我尝试在Windows上运行,并在更新后出现此问题。我尝试重新启动docker服务以及我的电脑,但没有任何效果。

运行时:

curl https://registry-1.docker.io/v2/ && echo Works

我回来了:

{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}
Works

最终,我尝试了: https://github.com/moby/moby/issues/22635#issuecomment-284956961

通过将固定地址更改为8.8.8.8: enter image description here

为我工作的人! 我仍然收到curl https://registry-1.docker.io/v2/的未经授权的消息,但是我设法从docker hub提取了图像。

答案 3 :(得分:2)

docker logout
docker login

这可能会解决您的问题

答案 4 :(得分:1)

此处提供的答案非常了不起,但是,如果您是其中的新手,而您没有意识到完整的错误,那么您可能会在该错误net/http: TLS handshake timeout.消息的结尾看到,这表示您的互联网连接速度很慢。因此,仅此一个问题就可以了。 面条

答案 5 :(得分:1)

  1. 列表项

上面有很多很好的答案,但我的与 Mac 和 Docker 桌面 UI 有点不同。就我而言,这是一个桌面代理设置,当我在公司防火墙/代理之外时需要将其关闭:

ERROR message from docker CLI:
Username: xxx
Password: *** 
Error response from daemon: Get https://registry-1.docker.io/v2/: Service Unavailable
  1. 我的环境:带有 Docker UI 的 Mac 机器(即称为 Docker 桌面, 显示为鲸鱼图标),在公司防火墙/代理之外运行。
  2. 我可以使用 Docker 桌面 UI 登录。
  3. 但是,无论是 docker login 还是 docker pull,我都不断收到上述错误,并且我偏离了用户 ID,重置了守护进程,...
  4. 最后,我进入了 Docker 桌面 UI。果然有一个代理设置,我很久以前就设置好了,完全忘记了!
  5. 是的,当我在防火墙之外时,我需要在这里关闭代理设置。 Docker 桌面 -> 首选项 -> 资源 -> 代理。转动 关闭手动代理配置。 然后 docker pull 工作(没有 docker 登录,因为我正在拉公共图像)!

谢谢 附注。我认为 Docker Desktop 和 Docker CLI 的行为差异导致了混淆。我可以通过 GUI 登录到 docker,但 CLI 不断出错,没有足够好的诊断信息。

答案 6 :(得分:1)

我在 Ubuntu 服务器上工作时遇到了同样的问题。

我收到以下错误:

deploy@my-comp:~$ docker login -u my-username -p my-password
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp 35.175.83.85:443: connect: connection refused

以下是我尝试过但不起作用的方法

  • 使用 sudo docker systemctl restart docker 重新启动 docker 服务
  • 关闭并重新启动 Ubuntu 服务器。
  • /etc/resolv.conf 文件中将名称服务器更改为 8.8.8.8

这对我有用

我尝试使用以下 netcat 命令检查服务器是否可以访问互联网:

nc -vz google.com 443

它返回了这个输出:

nc: connect to google.com port 443 (tcp) failed: Connection refused
nc: connect to google.com port 443 (tcp) failed: Network is unreachable

而不是像这样:

Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Connected to 172.217.166.110:443.
Ncat: 0 bytes sent, 0 bytes received in 0.07 seconds.

我尝试使用以下 wget 命令再次检查服务器是否可以访问互联网:

wget -q --spider http://google.com ; echo $?

它返回了:

4

代替:

0

注意:输出中除 0 以外的任何内容都表示您的系统未连接到互联网

然后我尝试了最后一次,如果服务器可以使用以下 Nmap 命令访问互联网:

nmap -p 443 google.com

它返回了:

Starting Nmap 7.01 ( https://nmap.org ) at 2021-02-16 11:50 WAT
Nmap scan report for google.com (216.58.223.238)
Host is up (0.00052s latency).
Other addresses for google.com (not scanned): 2c0f:fb50:4003:802::200e
rDNS record for 216.58.223.238: los02s04-in-f14.1e100.net
PORT    STATE  SERVICE
443/tcp closed https

Nmap done: 1 IP address (1 host up) scanned in 1.21 seconds

而是像这样:

Starting Nmap 7.01 ( https://nmap.org ) at 2021-02-16 11:50 WAT
Nmap scan report for google.com (216.58.223.238)
Host is up (0.00052s latency).
Other addresses for google.com (not scanned): 2c0f:fb50:4003:802::200e
rDNS record for 216.58.223.238: los02s04-in-f14.1e100.net
PORT    STATE  SERVICE
443/tcp open https

Nmap done: 1 IP address (1 host up) scanned in 1.21 seconds

注意:端口443/tcp的状态是关闭而不是打开

所有这些足以让我意识到服务器上不允许连接到互联网。

我所要做的就是与负责基础设施的团队交谈,以解决服务器上互联网的网络连接问题。一旦修复,我的 docker 命令就开始正常工作了。

资源9 commands to check if connected to internet with shell script examples

仅此而已。

我希望这会有所帮助

答案 7 :(得分:1)

我的/ etc / hosts文件中包含以下条目:

34.228.211.243  registry-1.docker.io
34.205.88.205   auth.docker.io
104.18.121.25   production.cloudflare.docker.com

只需注释掉它们,我就解决了问题。

答案 8 :(得分:1)

在MAC上对我有用的一个选项。

单击托盘中的Docker图标。打开首选项->代理。单击“手动代理”,并以与我们在HTTPS_PROXY env变量中指定的格式相同的格式指定Web服务器(HTTP)代理和安全Web服务器(HTTPS)代理。 选择“应用并重新启动”。

这对我有用

答案 9 :(得分:1)

NTML PROXY AND DOCKER 

If your company is behind MS Proxy Server that using the proprietary NTLM protocol.

You need to install **Cntlm** Authentication Proxy

After this SET the proxy in 
/etc/systemd/system/docker.service.d/http-proxy.conf) with the following format:

[Service]

Environment=“HTTP_PROXY=http://<<IP OF CNTLM Proxy Server>>:3182”

In addition you can set in the .DockerFile
export http_proxy=http://<<IP OF CNTLM Proxy Server>>:3182
export https_proxy=http://<IP OF CNTLM Proxy Server>>:3182
export no_proxy=localhost,127.0.0.1,10.0.2.*

Followed by:
systemctl daemon-reload

systemctl restart docker

这对我有用

答案 10 :(得分:1)

只需添加,以防其他人遇到此问题。

在Mac上    我必须注销并重新登录。

docker logout

docker login 

然后提示输入用户名(注意:不是电子邮件)和密码。 (需要一个https://hub.docker.com帐户才能拉取图像)

然后它对我有用。

答案 11 :(得分:0)

运行export DOCKER_CONTENT_TRUST=0,然后重试。

答案 12 :(得分:0)

这显然是一个代理问题: docker代理https连接到错误的位置。请记住,泊坞窗代理设置可能与操作系统(和curl)的设置不同。这是我设法解决此问题的方法:

首先,找出要在哪里代理docker https请求:

# docker info | grep Proxy
Http Proxy: http://<my.proxy.server>:8080
Https Proxy: https://<my.proxy.server>:8080
No Proxy: localhost,127.0.0.1

并再次检查您的https设置。

就我而言,我意识到“ Https代理”已设置为https://...而不是http://...,因此我在/etc/sysconfig/docker文件中对其进行了纠正(我使用的是RHEL7), ,在docker重新启动后:

# systemctl restart docker

代理变量显示成功更新:

# docker info | grep Proxy
Http Proxy: http://<my.proxy.server>:8080
Https Proxy: http://<my.proxy.server>:8080
No Proxy: localhost,127.0.0.1

一切正常:-)

答案 13 :(得分:0)

我第一次安装Docker并运行时遇到了这个问题

onViewCreated()

我在公司网络上,切换到个人网络为我解决了这个问题。

答案 14 :(得分:0)

对我来说,问题是通过重新启动docker守护程序解决的:

sudo systemctl restart docker

答案 15 :(得分:0)

docs for Request Data之后,我已经解决了有关$ sudo docker run hello-world的问题。

如果您在企业的HTTP代理服务器后面,则可以解决您的问题。

Docker doc还显示有关HTTP代理设置的其他情况。

答案 16 :(得分:0)

从网络过滤器(在macOS上为LuLu)得到了这一点,从而阻止了与Docker相关的进程之间的通信。

答案 17 :(得分:0)

就我而言,停止Proxifier可以修复它。我添加了一条规则,将来自vpnkit.exe的所有连接路由为Direct,现在它可以正常工作。

答案 18 :(得分:0)

您可能需要检查的问题之一是, 注册表是否需要VPN, 启用您的VPN,然后尝试再次拉动。

谢谢。

答案 19 :(得分:0)

  1. 使用以下命令重新检查代理设置

    码头工人信息| grep代理

  2. 检查VPN连接

  3. 如果VPN不使用CHECK NET连接

  4. 重新安装Docker并重复上述步骤。

  5. 享受

答案 20 :(得分:0)

尝试重新加载守护程序,然后重新启动docker服务。

~$ systemctl daemon-reload

答案 21 :(得分:0)

好的,我有一个类似的问题,但似乎没有任何帮助,重新启动 docker,禁用 IPv6,nslookup 和 dig 一切似乎都很好。

对我有用的是转到我的 Docker 桌面 -> 首选项 -> 实验性功能并取消选中使用新的虚拟化框架。

答案 22 :(得分:-1)

在拉取请求中使用 --tls。 例如,如果原始拉取请求是 docker pull dgraph/dgraph:v21.03.0 改用这个:docker --tls pull dgraph/dgraph:v21.03.0

答案 23 :(得分:-1)

docker login 终端命令对我有用。

如果您的机器需要 VPN,则必须先连接 VPN 并尝试 docker 登录。