mirror of
				https://github.com/opencontainers/runc.git
				synced 2025-10-31 19:13:12 +08:00 
			
		
		
		
	 c5b0be78e8
			
		
	
	c5b0be78e8
	
	
	
		
			
			This was added by commit 5aa82c950 back in the day when we thought
runc is going to be cross-platform. It's very clear now it's Linux-only
package.
While at it, further clarify it in README that we're Linux only.
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
		
	
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"os"
 | |
| 
 | |
| 	"github.com/opencontainers/runc/libcontainer"
 | |
| 	"github.com/opencontainers/runc/libcontainer/utils"
 | |
| 	"github.com/urfave/cli"
 | |
| )
 | |
| 
 | |
| var stateCommand = cli.Command{
 | |
| 	Name:  "state",
 | |
| 	Usage: "output the state of a container",
 | |
| 	ArgsUsage: `<container-id>
 | |
| 
 | |
| Where "<container-id>" is your name for the instance of the container.`,
 | |
| 	Description: `The state command outputs current state information for the
 | |
| instance of a container.`,
 | |
| 	Action: func(context *cli.Context) error {
 | |
| 		if err := checkArgs(context, 1, exactArgs); err != nil {
 | |
| 			return err
 | |
| 		}
 | |
| 		container, err := getContainer(context)
 | |
| 		if err != nil {
 | |
| 			return err
 | |
| 		}
 | |
| 		containerStatus, err := container.Status()
 | |
| 		if err != nil {
 | |
| 			return err
 | |
| 		}
 | |
| 		state, err := container.State()
 | |
| 		if err != nil {
 | |
| 			return err
 | |
| 		}
 | |
| 		pid := state.BaseState.InitProcessPid
 | |
| 		if containerStatus == libcontainer.Stopped {
 | |
| 			pid = 0
 | |
| 		}
 | |
| 		bundle, annotations := utils.Annotations(state.Config.Labels)
 | |
| 		cs := containerState{
 | |
| 			Version:        state.BaseState.Config.Version,
 | |
| 			ID:             state.BaseState.ID,
 | |
| 			InitProcessPid: pid,
 | |
| 			Status:         containerStatus.String(),
 | |
| 			Bundle:         bundle,
 | |
| 			Rootfs:         state.BaseState.Config.Rootfs,
 | |
| 			Created:        state.BaseState.Created,
 | |
| 			Annotations:    annotations,
 | |
| 		}
 | |
| 		data, err := json.MarshalIndent(cs, "", "  ")
 | |
| 		if err != nil {
 | |
| 			return err
 | |
| 		}
 | |
| 		os.Stdout.Write(data)
 | |
| 		return nil
 | |
| 	},
 | |
| }
 |