Only use DOCKER_RAMDISK on fstype rootfs

The docker configuration is determined at runtime,
so make it work with both old rootfs and new tmpfs.
pull/5133/head
Anders F Björklund 2019-08-14 21:18:38 +02:00
parent b89a9f6261
commit edea8f93a5
1 changed files with 21 additions and 0 deletions

View File

@ -92,6 +92,13 @@ func (p *BuildrootProvisioner) GenerateDockerOptions(dockerPort int) (*provision
driverNameLabel := fmt.Sprintf("provider=%s", p.Driver.DriverName())
p.EngineOptions.Labels = append(p.EngineOptions.Labels, driverNameLabel)
noPivot := true
// Using pivot_root is not supported on fstype rootfs
if fstype, err := rootFileSystemType(p); err == nil {
log.Debugf("root file system type: %s", fstype)
noPivot = fstype == "rootfs"
}
engineConfigTmpl := `[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
@ -101,8 +108,14 @@ Requires= minikube-automount.service docker.socket
[Service]
Type=notify
`
if noPivot {
engineConfigTmpl += `
# DOCKER_RAMDISK disables pivot_root in Docker, using MS_MOVE instead.
Environment=DOCKER_RAMDISK=yes
`
}
engineConfigTmpl += `
{{range .EngineOptions.Env}}Environment={{.}}
{{end}}
@ -160,6 +173,14 @@ WantedBy=multi-user.target
}, nil
}
func rootFileSystemType(p *BuildrootProvisioner) (string, error) {
fs, err := p.SSHCommand("df --output=fstype / | tail -n 1")
if err != nil {
return "", err
}
return strings.TrimSpace(fs), nil
}
// Package installs a package
func (p *BuildrootProvisioner) Package(name string, action pkgaction.PackageAction) error {
return nil