github.com/tonistiigi/docker@v0.10.1-0.20240229224939-974013b0dc6a/daemon/start_linux.go (about)

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