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

时间:2017-09-04 11:35:11

标签: ubuntu docker

我在我的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,因为我在公司代理/防火墙后面

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

8 个答案:

答案 0 :(得分:11)

您还需要使用环境变量为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命令,它应该可以正常工作

答案 1 :(得分:3)

您可以尝试的事情:

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,则可以按照说明here进行安装。它随Windows和Mac一起提供,但可以手动在Linux上安装。

方法2

Edit /etc/docker/daemon.json"provide a JSON configuration in the preference panel"并提供以下信息:

{ "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
    
  2. 然后在下面添加具有代理设置的内容(将https更改为“ HTTPS”)

    [Service]
    Environment="HTTP_PROXY=http://<allowed_proxy_ipv4_address>:<proxy_port_num>/"
    [Service]
    
  3. sudo systemctl daemon-reload

  4. sudo systemctl restart docker
  5. 验证配置是否已加载:systemctl show --property=Environment docker

c)重新安装Docker

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

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

答案 2 :(得分:2)

我遇到了这个错误,并且能够通过简单的重启来解决:

sudo service docker restart

答案 3 :(得分:1)

转到 Docker设置->代理->手动代理配置

在输入中设置代理详细信息并应用。

重新启动docker。这样可以解决问题。

http://19.12.1.40:83

答案 4 :(得分:0)

我通过8.8.8.8解决了更改DNS服务器的错误-Ubuntu 18.04.3 LTS

1-打开Ubuntu系统设置并导航到网络

enter image description here

2-在要连接的列表中,单击网络名称旁边的设置按钮。

3-“新窗口”将打开,其中包含许多标签,其中一个标签为“ IPv4”。

enter image description here

4-打开“ IPv4”选项卡后,您将找到“ DNS”字段。在这里您可以编写DNS服务器

enter image description here

如果要使用多个DNS,则可以输入并用逗号分隔。

答案 5 :(得分:0)

配置Docker以在启动时启动

sudo systemctl enable docker

答案 6 :(得分:0)

如果您在Windows中遇到此问题,简化的详细解决方案如下: 右键点击网络 开放的网络和互联网设置 在高级网络设置中,单击更改适配器选项 右键单击您的网络或wifi连接 点击属性 在“网络”选项卡中,单击Internet协议版本4(TCP / IPv4)或ipv6 通常,点击使用以下DNS服务器地址,然后在首选DNS服务器上添加8.8.8.8

答案 7 :(得分:0)

我尝试了上述许多答案,但都无济于事。

最后,这种方法对我有用:

docker logout
docker login

我不知道为什么。