start_unix.go 988 B

1234567891011121314151617181920212223242526272829303132
  1. // +build !windows
  2. package daemon
  3. import (
  4. "fmt"
  5. "github.com/docker/docker/container"
  6. "github.com/docker/docker/libcontainerd"
  7. )
  8. // getLibcontainerdCreateOptions callers must hold a lock on the container
  9. func (daemon *Daemon) getLibcontainerdCreateOptions(container *container.Container) ([]libcontainerd.CreateOption, error) {
  10. createOptions := []libcontainerd.CreateOption{}
  11. // Ensure a runtime has been assigned to this container
  12. if container.HostConfig.Runtime == "" {
  13. container.HostConfig.Runtime = daemon.configStore.GetDefaultRuntimeName()
  14. container.CheckpointTo(daemon.containersReplica)
  15. }
  16. rt := daemon.configStore.GetRuntime(container.HostConfig.Runtime)
  17. if rt == nil {
  18. return nil, fmt.Errorf("no such runtime '%s'", container.HostConfig.Runtime)
  19. }
  20. if UsingSystemd(daemon.configStore) {
  21. rt.Args = append(rt.Args, "--systemd-cgroup=true")
  22. }
  23. createOptions = append(createOptions, libcontainerd.WithRuntime(rt.Path, rt.Args))
  24. return createOptions, nil
  25. }