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?

  • Zagorath@aussie.zoneOP
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    2
    ·
    3 days ago

    It’s like if you asked why the top gear in your car isn’t working and gave the model of car and engine type and gearbox

    Except if I try and access the same domain using curl, it works fine. For some reason, Docker specifically is what’s failing.

    • tychosmoose@piefed.social
      link
      fedilink
      English
      arrow-up
      3
      ·
      3 days ago

      Different programs have different defaults.

      But in your situation which would be more helpful - prevent this one docker command from using ipv6 (likely more difficult), or preventing all commands from using your broken ipv6 config (likely easier)?

      I have no idea about the first. Maybe some people know this detail. But I’m sure that with a distro and version that you’re running, there are lots of people who could help with the second. Raspberry Pi 3B+ is the hardware. What software are you using?

      • Zagorath@aussie.zoneOP
        link
        fedilink
        English
        arrow-up
        2
        ·
        3 days ago

        Whatever the latest version of Raspbian was a month or two ago when I installed it. uname -a outputs [...]6.12.25+rpt-rpi-v8[...]. /etc/os-release contains “Debian GNU/Linux 12 (bookworm)”.

        • tychosmoose@piefed.social
          link
          fedilink
          English
          arrow-up
          3
          ·
          3 days ago

          Ok, so it’s probably using NetworkManager. I would try disabling it in /etc/NetworkManager/NetworkManager.conf by adding a block like:

          [ipv6]
          addr-gen-mode=stable-privacy
          method=disabled
          

          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 addr is different.

          Although it looks like your ip addr output posted an hour or so ago doesn’t show any ipv6 addressing. Maybe the problem is solved now.

          • Zagorath@aussie.zoneOP
            link
            fedilink
            English
            arrow-up
            2
            ·
            3 days ago

            Unfortunately not.

             docker run hello-world
            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
            
            Run 'docker run --help' for more information
            
            • tychosmoose@piefed.social
              link
              fedilink
              English
              arrow-up
              2
              ·
              3 days ago

              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.

              • MysteriousSophon21@lemmy.world
                link
                fedilink
                English
                arrow-up
                1
                ·
                2 days ago

                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.

              • Zagorath@aussie.zoneOP
                link
                fedilink
                English
                arrow-up
                1
                ·
                3 days ago

                Do you have no ipv6 address now in ip addr

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

                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

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