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?
PieFed
Ok, so it's probably using NetworkManager. I would try disabling it in /etc/NetworkManager/NetworkManager.conf by adding a block like:
Then
sudo systemctl restart NetworkManager.Can't say for sure if this will work. I dislike using NetworkManager on my servers so I can't test if this works. But hopefully the before/after of
ip addris different.Although it looks like your
ip addroutput posted an hour or so ago doesn't show any ipv6 addressing. Maybe the problem is solved now.Unfortunately not.
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 +shortdoes 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.jsonfile (create it if it doesnt exist), then restart docker withsudo 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.
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 digBut 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.