package main import ( "log" "strconv" "github.com/codegangsta/cli" "github.com/dotcloud/docker/pkg/libcontainer/namespaces" ) var nsenterCommand = cli.Command{ Name: "nsenter", Usage: "init process for entering an existing namespace", Action: nsenterAction, } func nsenterAction(context *cli.Context) { args := context.Args() if len(args) < 4 { log.Fatalf("incorrect usage: ...") } container, err := loadContainerFromJson(args.Get(2)) if err != nil { log.Fatalf("unable to load container: %s", err) } nspid, err := strconv.Atoi(args.Get(0)) if err != nil { log.Fatalf("unable to read pid: %s from %q", err, args.Get(0)) } if nspid <= 0 { log.Fatalf("cannot enter into namespaces without valid pid: %q", nspid) } if err := namespaces.NsEnter(container, args.Get(1), nspid, args[3:]); err != nil { log.Fatalf("failed to nsenter: %s", err) } }