lookup registry-1.docker.io: no such host

Things you can try:

a) Add nameserver 8.8.8.8

Method #1

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

Then restart the server using

service docker restart

Note: If you don't have docker-machine installed, you can follow instructions here to install it. It comes with Windows and Mac but is available for install on Linux manually.

Method #2

Edit /etc/docker/daemon.json Or "provide a JSON configuration in the preference panel" with the following information:

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

Then restart the server using

service docker restart

b) Setup Proxy

Method #1

Edit your proxy configuration as Tarun Lalwani suggested.

Edit /etc/default/docker and add:

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

Then restart the server using

service docker restart

Method #2

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

  1. Create a systemd drop-in directory for the docker service:

    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. Then add below content with proxy settings with it (Change to "HTTPS" for 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. Verify that the configuration has been loaded: systemctl show --property=Environment docker

c) Reinstall Docker

Unfortunately the last resort, could work. Check out these github pages for more suggestions:

  • https://github.com/moby/moby/issues/32270
  • https://github.com/docker/for-mac/issues/1317

For me, setting up the proxy using the systemctl method was the only thing that worked.


You need to set the proxy for Docker daemon also using environment variable. Docker run is also doing docker pull since the image doesn't exists. In your case the proxy is only applied to the docker run command, which delegates to the docker daemon which is running without proxy.

Create a file named /etc/systemd/system/docker.service.d/10_docker_proxy.conf with below content

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

Make sure to update the proxy as per the ones you have 1.1.1.1:111 is just an example

Then execute below commands to restart docker

sudo systemctl daemon-reload
sudo systemctl restart docker

Now use your docker run command and it should work

Tags:

Docker

Ubuntu