diff --git a/daemon/health.go b/daemon/health.go index 12bb9ee7f4..847cdafd6a 100644 --- a/daemon/health.go +++ b/daemon/health.go @@ -10,7 +10,6 @@ import ( "time" "github.com/docker/docker/api/types" - containertypes "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/strslice" "github.com/docker/docker/container" "github.com/docker/docker/daemon/exec" @@ -65,7 +64,7 @@ type cmdProbe struct { func (p *cmdProbe) run(ctx context.Context, d *Daemon, cntr *container.Container) (*types.HealthcheckResult, error) { cmdSlice := strslice.StrSlice(cntr.Config.Healthcheck.Test)[1:] if p.shell { - cmdSlice = append(getShell(cntr.Config), cmdSlice...) + cmdSlice = append(getShell(cntr), cmdSlice...) } entrypoint, args := d.getEntrypointAndArgs(strslice.StrSlice{}, cmdSlice) execConfig := exec.NewConfig() @@ -376,12 +375,15 @@ func min(x, y int) int { return y } -func getShell(config *containertypes.Config) []string { - if len(config.Shell) != 0 { - return config.Shell +func getShell(cntr *container.Container) []string { + if len(cntr.Config.Shell) != 0 { + return cntr.Config.Shell } if runtime.GOOS != "windows" { return []string{"/bin/sh", "-c"} } + if cntr.OS != runtime.GOOS { + return []string{"/bin/sh", "-c"} + } return []string{"cmd", "/S", "/C"} }