12345678910111213141516171819202122232425262728293031323334353637 |
- // +build !windows
- package daemon // import "github.com/docker/docker/daemon"
- import (
- "github.com/docker/docker/container"
- "github.com/docker/docker/errdefs"
- "github.com/opencontainers/runc/libcontainer/cgroups"
- "github.com/pkg/errors"
- "github.com/sirupsen/logrus"
- )
- // getLibcontainerdCreateOptions callers must hold a lock on the container
- func (daemon *Daemon) getLibcontainerdCreateOptions(container *container.Container) (string, interface{}, error) {
- // Ensure a runtime has been assigned to this container
- if container.HostConfig.Runtime == "" {
- container.HostConfig.Runtime = daemon.configStore.GetDefaultRuntimeName()
- container.CheckpointTo(daemon.containersReplica)
- }
- 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)
- }
- rt.Shim = getShimConfig(daemon.configStore, p)
- }
- 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)
- }
- return rt.Shim.Binary, rt.Shim.Opts, nil
- }
|