205

我刚刚在关注他们的网页时安装了Docker-Toolbox

我开始Docker QuickStart Terminal并看到以下内容

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/


docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com

bash-3.2$ 

但是当我尝试表演时docker pull hello-world,这就是我所看到的

bash-3.2$ docker run hello-world
Unable to find image 'hello-world:latest' locally
Pulling repository docker.io/library/hello-world
Network timed out while trying to connect to https://index.docker.io/v1/repositories/library/hello-world/images. You may want to check your internet connection or if you are behind a proxy.
bash-3.2$ 

怎么了?

4

20 回答 20

482

今天早上我遇到了同样的问题,下面为我解决了这个问题:

$ docker-machine restart default      # Restart the environment
$ eval $(docker-machine env default)  # Refresh your environment settings

这似乎是由于 Docker 虚拟机使自己进入了一个奇怪的状态。这里有一个开放的github 问题

于 2015-08-15T08:45:51.690 回答
41

我在 Windows 10 上安装了没有 Toolbox 的 Docker,因此需要启用 Hyper-V 的版本。

对于 Docker 版本 1.12,我必须进入任务栏,右键单击 Docker 图标,选择设置 -> 网络并将 DNS 服务器设置为固定,以便使用 Google 的 DNS 服务器在8.8.8.8.

更改该设置后,它终于起作用了。

于 2016-07-18T22:40:11.553 回答
16

更简单的解决方案是在/etc/default/docker文件中添加以下条目

导出 http_proxy="http://HOST:PORT/"

并重新启动 docker 服务

服务泊坞窗重新启动

于 2016-01-15T13:24:11.927 回答
8

2016 年 8 月更新

使用 Docker for Mac(版本 1.12.0),看到以下形式的问题:

➜  docker pull node
Using default tag: latest
Pulling repository docker.io/library/node
Network timed out while trying to connect to https://index.docker.io/v1/repositories/library/node/images. You may want to check your internet connection or if you are behind a proxy.`enter code here`

这已通过更新我的 MacBook Pro 无线网络设置以包括以下 DNS 条目来解决:8.8.8.8

有关更多信息,请参阅提供此处给出的答案的这个(过时的)问题。

于 2016-08-14T14:28:23.733 回答
7

我在 VBOX 5.10 中使用 Docker VM 在我的 MAC(主机)上运行 Docker 时遇到了这个问题。这是一个网络问题。简单的解决方法是将桥接网络添加到 VBOX 映像。您可以使用 VM 中包含的 NAT 配置,但您需要将 ssh 端口从 50375 更改为 2375。

于 2015-11-16T15:41:47.837 回答
4
sudo service docker stop
sudo service docker start

为我工作..

不知何故,sudo service docker restart没有工作

(RHEL7)

于 2016-05-11T07:58:58.063 回答
4

在 Windows 7 上,如果您认为自己落后于代理

  1. 登录到默认机器

    $ docker-machine ssh default
    
  2. 更新配置文件以更新代理设置

    docker@default:~$ sudo vi /var/lib/boot2docker/profile
    
  3. 根据需要从下面追加

    # replace with your office's proxy environment
    export"HTTP_PROXY=http://PROXY:PORT"
    export"HTTPS_PROXY=http://PROXY:PORT"
    
    # you can add more no_proxy with your environment.
    export"NO_PROXY=192.168.99.*,*.local,169.254/16,*.example.com,192.168.59.*"
    
  4. 出口

    docker@default:~$ exit
    
  5. 重启docker机器

    docker-machine restart default
    
  6. 更新环境设置

    eval $(docker-machine env default)
    

上述步骤略有调整,但在故障排除指南中给出:https ://docs.docker.com/toolbox/faqs/troubleshoot/#/update-varlibboot2dockerprofile-on-the-docker-machine

于 2016-12-12T03:03:14.777 回答
2

我昨天遇到了同样的问题,没有一个“流行”的答案(比如将 DNS 修复到 8.8.8.8)对我有用。我最终偶然发现了这个链接,这就是诀窍...... https://github.com/docker/for-win/issues/16

在 Docker for Windows、Windows 10 和 Hyper-V 之间,虚拟网络适配器创建过程中似乎存在问题。具体来说,您最终可能会得到两个“vEthernet (DockerNAT)”网络适配器。Get-NetAdapter "vEthernet (DockerNAT)"使用(在提升的 PowerShell 控制台中)检查这一点。如果结果显示多个适配器,您可以禁用并重命名它:

$vmNetAdapter = Get-VMNetworkAdapter -ManagementOS -SwitchName DockerNAT
Get-NetAdapter "vEthernet (DockerNAT)" | ? { $_.DeviceID -ne $vmNetAdapter.DeviceID } | Disable-NetAdapter -Confirm:$False -PassThru | Rename-NetAdapter -NewName "OLD"

然后打开设备管理器并删除禁用的适配器(出于某种原因,您可以从此处执行此操作,但不能从网络和共享中心适配器视图执行此操作)。

于 2016-08-12T01:50:27.517 回答
1

我假设你有网络问题。你在代理后面吗?它是否有可能过滤docker.io或阻止 docker 用户代理的连接?

我安装了工具箱并运行了您的测试。它工作正常,在这里:

docker is configured to use the default machine with IP 192.168.99.101
For help getting started, check out the docs at https://docs.docker.com

bash-3.2$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world

535020c3e8ad: Pull complete 
af340544ed62: Already exists 
library/hello-world:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:d5fbd996e6562438f7ea5389d7da867fe58e04d581810e230df4cc073271ea52
Status: Downloaded newer image for hello-world:latest

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

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com

For more examples and ideas, visit:
 https://docs.docker.com/userguide/

bash-3.2$
于 2015-08-13T14:30:51.553 回答
1

在 Windows 10 上。只需右键单击系统托盘 docker 图标-> 设置... -> 休息 -> 重新启动 Docker

于 2016-06-22T18:06:06.940 回答
0

我在 boot2docker 上遇到了同样的问题,并通过以下方式重新启动它来修复它:

boot2docker restart
于 2015-11-05T09:58:45.243 回答
0

我今天刚遇到这个1.10.1问题,现有的解决方案都没有奏效。我尝试重新启动、升级、重新生成证书,...

我注意到我在机器上创建了很多网络。删除它们后:

docker network ls | grep bridge | awk '{print $1}' | xargs -n1 docker network rm

DNS 再次开始工作。

注意:您可以忽略有关预定义网络的错误

于 2016-03-13T19:58:40.857 回答
0

HTTP_PROXY如果您在代理后面,那么设置和环境是不够的HTTPS_PROXY。您应该在机器创建时设置它。

参数是--engine-env

docker-machine create -d "virtualbox" --engine-env HTTP_PROXY=http://<PROXY>:<PORT> --engine-env HTTPS_PROXY=<PROXY>:<PORT> dev
于 2016-05-06T09:42:00.707 回答
0

就我而言,在 Alpine Linux 上安装 docker 时出现错误:

尝试连接到https://index.docker.io/v1/repositories/library/时网络超时.......

在此处使用脚本: https ://github.com/docker/docker/blob/master/contrib/download-frozen-image-v2.sh

作品。它使用 curl 下载图像,然后向您展示如何解压缩和“docker load”它。

我在 8.8.8.8 尝试了上述静态 DNS 方法并禁用了 ipv6(我不明白代理的事情),但它们都不适合我。

编辑 2016 年 9 月 8 日:

我最初使用的是 dropbear 而不是 openssh。用 openssh 重新安装 Alpine 解决了这个问题。

下一个问题是“ApplyLayer exit status 1 stdout: stderr: chmod /bin/mount:permission denied”在拉取期间出现错误。

来自(nixaid.com/grsec-in-docker/):

要构建 Docker 映像,我必须禁用以下 grsec 保护。修改 /etc/sysctl.d/grsec.conf 如下:

kernel.grsecurity.chroot_deny_chmod = 0 kernel.grsecurity.chroot_deny_mknod = 0 kernel.grsecurity.chroot_caps = 0 #与systemd包/CAP_SETFCAP相关

在高山的情况下,虽然它是

/etc/sysctl.d/00-alpine.conf

重启

于 2016-09-02T19:37:17.567 回答
0

重新启动 Docker 或重新创建映像没有帮助。我重新启动 Windows 无济于事。

令人惊讶的是,当我 ssh 进入正在运行的容器时,curl https://index.docker.io/v1/repositories/library/hello-world/images我得到了一个完全有效的响应。

我在 64 位 Windows 10 Pro 上使用了带有 VirtualBox的Docker Toolbox 。

我的解决方案是卸载旧的 Docker 版本并安装使用 Hyper-V而不是 VirtualBox 的新版本。

现在 Docker 又可以工作了。

于 2016-09-16T10:57:21.450 回答
0

如果您在代理后面,请使用以下命令

sudo mkdir /etc/systemd/system/docker.service.d

sudo cd /etc/systemd/system/docker.service.d

sudo vi http-proxy.conf
[Service]

Environment=HTTP_PROXY=http://proxy-server-ip:port" "NO_PROXY=localhost,127.0.0.1"

sudo systemctl daemon-reload 

sudo systemctl show --property=Environment docker

sudo systemctl restart docker

如果您可以获取最新的 ubuntu,请尝试此操作

sudo docker run -it ubuntu bash

ubuntu:latest本地找不到图片

最新:从库/ubuntu b3e1c725a85f 中拉取:拉取完成

4daad8bdde31:拉取完成

63fe8c0068a8:拉取完成

4a70713c436f:拉动完成

bd842a2105a8:拉取完成

消化:

sha256:7a64bc9c8843b0a8c8b8a7e4715b7615e4e1b0d8ca3c7e7a76ec8250899c397a

状态:为 ubuntu 下载更新的图像:最新

它终于对我有用了:)

于 2016-12-16T04:13:10.483 回答
0

另一种情况:如果您的 docker 网络适配器被禁用,它将失败并出现此错误。该适配器名为“vEthernet (DockerNAT)”或类似名称。显然,这个适配器以某种方式参与了正常的 docker pull 行为。重新启用它以解决问题。

于 2017-02-04T18:27:59.920 回答
0

为 docker 服务创建一个 systemd 插入目录:

$ sudo mkdir -p /etc/systemd/system/docker.service.d

创建一个名为/etc/systemd/system/docker.service.d/http-proxy.conf添加HTTP_PROXY环境​​变量的文件:

[服务]

Environment="HTTP_PROXY=http://proxy.example.com:80/"

希望能帮助到你

于 2018-03-01T19:12:31.400 回答
0

对我来说,请参阅https://docs.docker.com/network/proxy/ ,没有 http:// 或 https:// 前缀的代理设置有效。例如:代理:端口

或带有 / 后缀,带有 http:// 或 https:// 前缀 e.: http://PROXY:PORT/

于 2021-10-20T02:37:47.990 回答
-1

在 Windows 上,当我从工作网络转移到家庭网络时,就会发生这种情况。

要解决它,请运行:

  1. docker-machine stop
  2. docker-machine start
  3. docker-env
  4. "C:\Program Files\Docker Toolbox\docker-machine.exe" env | Invoke-Expression
于 2016-07-01T00:52:08.463 回答