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.
pgp8j008cpYps.pgp
Description: OpenPGP digital signature
