How do I stop Docker trying to pull from IPv6?

submitted by

I'm currently trying to install Docker on my old Raspberry Pi (3 Model B+) to host some personal projects. When I run docker run hello-world, I get:

Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/library/hello-world/manifests/sha256:ec153840d1e635ac434fab5e377081f17e0e15afab27beb3f726c3265039cfff": dial tcp [2600:1f18:2148:bc00:eff:d3ae:b836:fa07]:443: connect: network is unreachable

My Internet connection does not support IPv6 at all, which would explain why this error occurs. But how do I force docker-pull to only use IPv4?

35
47

Back to main discussion

Parent comment

Well crap. Do you have no ipv6 address now in ip addr?

Guess I gave Docker too much benefit of the doubt and assumed it should failover to v4 once v6 was disabled. Bad assumption on my part.

Could it be a DNS problem? If you dig registry-1.docker.io +short does it return an ipv4 or v6 address?

It looks like there have been sporadic reports of problems from people since last year.

Try adding {"ipv6": false} to your /etc/docker/daemon.json file (create it if it doesnt exist), then restart docker with sudo systemctl restart docker - this forces docker to use IPv4 only.

This flag seems to only disable ipv6 on the default Docker bridge network, not daemon-wide. At least per this discussion.

Do you have no ipv6 address now in ip addr

Just comparing it by eye, there's no change.

bash zag@raspberrypi:~ $ man dig No manual entry for dig zag@raspberrypi:~ $ which dig zag@raspberrypi:~ $ sudo apt install dig Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package dig

But if I ping it

bash $ ping registry-1.docker.io PING registry-1.docker.io (107.20.112.188) 56(84) bytes of data.

It's in the dnsutils package.

52.207.69.161
52.21.128.203
3.224.238.37
44.218.153.24
54.210.249.78
18.232.25.125
52.72.195.97
54.161.169.181
Insert image