查找 registry-1.docker.io:没有这样的主机

新手上路,请多包涵

我的 Ubuntu 16.4 服务器上运行着 docker 守护进程

我的服务器详细信息:

没有可用的 LSB 模块。发行商 ID:Ubuntu 描述:Ubuntu 17.04 发行版:17.04 代号:zesty

我收到以下错误:

 aa@aaa-VirtualBox:/etc/default$ docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io: no such host.
See 'docker run --help'.

我已经设置了 http_proxy 和 https_proxy 因为我在公司代理/防火墙后面

有什么线索可以解决这个问题吗?

原文由 Tal Avissar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 867
2 个回答

您还需要使用环境变量为 Docker 守护程序设置代理。 Docker run 也在做 docker pull 因为镜像不存在。在您的情况下,代理仅应用于 docker run 命令,该命令委托给在没有代理的情况下运行的 docker 守护进程。

创建一个名为 /etc/systemd/system/docker.service.d/10_docker_proxy.conf 的文件,内容如下

[Service]
Environment=HTTP_PROXY=http://1.1.1.1:111
Environment=HTTPS_PROXY=http://1.1.1.1:111

确保根据您拥有的代理更新代理 1.1.1.1:111 只是一个示例

然后执行以下命令重启docker

 sudo systemctl daemon-reload
sudo systemctl restart docker

现在使用您的 docker run 命令,它应该可以工作

原文由 Tarun Lalwani 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以尝试的事情:

a) 添加名称服务器 8.8.8.8

方法#1

 docker-machine ssh default
sudo vi /etc/resolv.conf
//change nameserver to 8.8.8.8

然后使用重启服务器

service docker restart

注意:如果您没有安装 docker-machine,您可以按照 此处 的说明进行安装。它随 Windows 和 Mac 一起提供,但可以在 Linux 上手动安装。

方法#2

使用以下信息 编辑 /etc/docker/daemon.json“在首选项面板中提供 JSON 配置”

 { "dns" : [ "8.8.8.8", "8.8.4.4" ]}

然后使用重启服务器

service docker restart

b) 设置代理

方法#1

按照 Tarun Lalwani 的建议编辑您的代理配置。

编辑 /etc/default/docker 并添加:

 export http_proxy='http://username:password@proxy-host:proxy-port'
export https_proxy='https://username:password@proxy-host:proxy-port'

然后使用重启服务器

service docker restart

方法#2

来源: https ://github.com/moby/moby/issues/32270#issuecomment-340709035

  1. 为 docker 服务创建一个 systemd 插入目录:
    mkdir -p /etc/systemd/system/docker.service.d
   # For HTTP Proxy:
   vim /etc/systemd/system/docker.service.d/http-proxy.conf
   # For HTTPS Proxy:
   vim /etc/systemd/system/docker.service.d/https-proxy.conf

  1. 然后在下面添加带有代理设置的内容(将 https 更改为“HTTPS”)
    [Service]
   Environment="HTTP_PROXY=http://<allowed_proxy_ipv4_address>:<proxy_port_num>/"
   [Service]

  1. sudo systemctl daemon-reload

  2. sudo systemctl restart docker

  3. 验证是否已加载配置: systemctl show --property=Environment docker

c) 重新安装 Docker

不幸的是,最后的手段,可以工作。查看这些 github 页面以获取更多建议:

对我来说,使用 systemctl 方法设置代理是唯一有效的方法。

原文由 Katie 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题