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
parent
b89a9f6261
commit
edea8f93a5
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue