start_linux.go 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. package daemon // import "github.com/docker/docker/daemon"
  2. import (
  3. "context"
  4. "fmt"
  5. specs "github.com/opencontainers/runtime-spec/specs-go"
  6. "github.com/docker/docker/container"
  7. "github.com/docker/docker/errdefs"
  8. "github.com/docker/docker/libcontainerd/types"
  9. "github.com/docker/docker/oci"
  10. )
  11. // initializeCreatedTask performs any initialization that needs to be done to
  12. // prepare a freshly-created task to be started.
  13. func (daemon *Daemon) initializeCreatedTask(ctx context.Context, tsk types.Task, container *container.Container, spec *specs.Spec) error {
  14. if !container.Config.NetworkDisabled {
  15. nspath, ok := oci.NamespacePath(spec, specs.NetworkNamespace)
  16. if ok && nspath == "" { // the runtime has been instructed to create a new network namespace for tsk.
  17. sb, err := daemon.netController.GetSandbox(container.ID)
  18. if err != nil {
  19. return errdefs.System(err)
  20. }
  21. if err := sb.SetKey(fmt.Sprintf("/proc/%d/ns/net", tsk.Pid())); err != nil {
  22. return errdefs.System(err)
  23. }
  24. }
  25. }
  26. return nil
  27. }