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
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
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]
sudo systemctl daemon-reload
sudo systemctl restart docker
- 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