2016-06-07 07:45:21 +00:00
// +build !windows
2018-02-05 21:05:59 +00:00
package daemon // import "github.com/docker/docker/daemon"
2016-05-23 21:49:50 +00:00
import (
"github.com/docker/docker/container"
2018-01-11 19:53:06 +00:00
"github.com/docker/docker/errdefs"
2020-07-07 20:33:46 +00:00
"github.com/opencontainers/runc/libcontainer/cgroups"
2017-07-19 14:20:13 +00:00
"github.com/pkg/errors"
2020-07-07 20:33:46 +00:00
"github.com/sirupsen/logrus"
2016-05-23 21:49:50 +00:00
)
2017-09-22 13:52:41 +00:00
// getLibcontainerdCreateOptions callers must hold a lock on the container
2020-07-07 20:33:46 +00:00
func ( daemon * Daemon ) getLibcontainerdCreateOptions ( container * container . Container ) ( string , interface { } , error ) {
2016-06-20 18:21:01 +00:00
// Ensure a runtime has been assigned to this container
if container . HostConfig . Runtime == "" {
2017-01-12 19:24:30 +00:00
container . HostConfig . Runtime = daemon . configStore . GetDefaultRuntimeName ( )
2017-03-27 17:18:53 +00:00
container . CheckpointTo ( daemon . containersReplica )
2016-06-20 18:21:01 +00:00
}
2020-07-07 20:33:46 +00:00
rt := daemon . configStore . GetRuntime ( container . HostConfig . Runtime )
if rt . Shim == nil {
p , err := daemon . rewriteRuntimePath ( container . HostConfig . Runtime , rt . Path , rt . Args )
if err != nil {
return "" , nil , translateContainerdStartErr ( container . Path , container . SetExitCode , err )
2019-11-05 07:10:19 +00:00
}
2020-07-07 20:33:46 +00:00
rt . Shim = getShimConfig ( daemon . configStore , p )
2019-11-05 07:10:19 +00:00
}
2020-07-07 20:33:46 +00:00
if rt . Shim . Binary == linuxShimV1 {
if cgroups . IsCgroup2UnifiedMode ( ) {
return "" , nil , errdefs . InvalidParameter ( errors . Errorf ( "runtime %q is not supported while cgroups v2 (unified hierarchy) is being used" , container . HostConfig . Runtime ) )
}
logrus . Warnf ( "Configured runtime %q is deprecated and will be removed in the next release" , container . HostConfig . Runtime )
2016-08-26 13:33:26 +00:00
}
2016-05-23 21:49:50 +00:00
2020-07-07 20:33:46 +00:00
return rt . Shim . Binary , rt . Shim . Opts , nil
2016-05-23 21:49:50 +00:00
}