bug-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#34333: Docker daemon failing to start on boot


From: Danny Milosavljevic
Subject: bug#34333: Docker daemon failing to start on boot
Date: Mon, 18 Mar 2019 11:53:03 +0100

Hi Allan,

thanks for the logs!

I've found the problem now.

daemon/graphdriver/overlay2/overlay.go:

func supportsOverlay() error {
        // We can try to modprobe overlay first before looking at
        // proc/filesystems for when overlay is supported
        exec.Command("modprobe", "overlay").Run()

        f, err := os.Open("/proc/filesystems")
        if err != nil {
                return err
        }
        defer f.Close()

        s := bufio.NewScanner(f)
        for s.Scan() {
                if s.Text() == "nodev\toverlay" {
                        return nil
                }
        }
        logrus.WithField("storage-driver", "overlay2").Error("'overlay' not 
found as a supported filesystem on this host. Please ensure kernel is new 
enough and has overlay support loaded.")
        return graphdriver.ErrNotSupported
}

We don't load "overlay" explicitly.  The above is some weird 
contraption--loading kernel modules from random user space programs.  Seriously?

And I suspect that modprobe is not found in your system profile.

As a workaround, try adding "kmod" to the list of packages in your 
operating-system in your system configuration and reconfigure.

But the real fix is for Docker to stop doing this weird thing in the first 
place.  Nowadays, modules are autoloaded when someone is accessing the thing 
(by udev, or just by using it etc).  

In this case, they do

        if err := mount("overlay", mountTarget, "overlay", 0, mountData); err 
!= nil {

later on.  And that's how it should have been detecting it, too.

Attachment: pgpQ1AqUMXcTr.pgp
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]