github.com/xuyutom/docker@v1.6.0/runconfig/config.go (about)

     1  package runconfig
     2  
     3  import (
     4  	"github.com/docker/docker/engine"
     5  	"github.com/docker/docker/nat"
     6  )
     7  
     8  // Note: the Config structure should hold only portable information about the container.
     9  // Here, "portable" means "independent from the host we are running on".
    10  // Non-portable information *should* appear in HostConfig.
    11  type Config struct {
    12  	Hostname        string
    13  	Domainname      string
    14  	User            string
    15  	Memory          int64  // FIXME: we keep it for backward compatibility, it has been moved to hostConfig.
    16  	MemorySwap      int64  // FIXME: it has been moved to hostConfig.
    17  	CpuShares       int64  // FIXME: it has been moved to hostConfig.
    18  	Cpuset          string // FIXME: it has been moved to hostConfig and renamed to CpusetCpus.
    19  	AttachStdin     bool
    20  	AttachStdout    bool
    21  	AttachStderr    bool
    22  	PortSpecs       []string // Deprecated - Can be in the format of 8080/tcp
    23  	ExposedPorts    map[nat.Port]struct{}
    24  	Tty             bool // Attach standard streams to a tty, including stdin if it is not closed.
    25  	OpenStdin       bool // Open stdin
    26  	StdinOnce       bool // If true, close stdin after the 1 attached client disconnects.
    27  	Env             []string
    28  	Cmd             []string
    29  	Image           string // Name of the image as it was passed by the operator (eg. could be symbolic)
    30  	Volumes         map[string]struct{}
    31  	WorkingDir      string
    32  	Entrypoint      []string
    33  	NetworkDisabled bool
    34  	MacAddress      string
    35  	OnBuild         []string
    36  	Labels          map[string]string
    37  }
    38  
    39  func ContainerConfigFromJob(job *engine.Job) *Config {
    40  	config := &Config{
    41  		Hostname:        job.Getenv("Hostname"),
    42  		Domainname:      job.Getenv("Domainname"),
    43  		User:            job.Getenv("User"),
    44  		Memory:          job.GetenvInt64("Memory"),
    45  		MemorySwap:      job.GetenvInt64("MemorySwap"),
    46  		CpuShares:       job.GetenvInt64("CpuShares"),
    47  		Cpuset:          job.Getenv("Cpuset"),
    48  		AttachStdin:     job.GetenvBool("AttachStdin"),
    49  		AttachStdout:    job.GetenvBool("AttachStdout"),
    50  		AttachStderr:    job.GetenvBool("AttachStderr"),
    51  		Tty:             job.GetenvBool("Tty"),
    52  		OpenStdin:       job.GetenvBool("OpenStdin"),
    53  		StdinOnce:       job.GetenvBool("StdinOnce"),
    54  		Image:           job.Getenv("Image"),
    55  		WorkingDir:      job.Getenv("WorkingDir"),
    56  		NetworkDisabled: job.GetenvBool("NetworkDisabled"),
    57  		MacAddress:      job.Getenv("MacAddress"),
    58  	}
    59  	job.GetenvJson("ExposedPorts", &config.ExposedPorts)
    60  	job.GetenvJson("Volumes", &config.Volumes)
    61  	if PortSpecs := job.GetenvList("PortSpecs"); PortSpecs != nil {
    62  		config.PortSpecs = PortSpecs
    63  	}
    64  	if Env := job.GetenvList("Env"); Env != nil {
    65  		config.Env = Env
    66  	}
    67  	if Cmd := job.GetenvList("Cmd"); Cmd != nil {
    68  		config.Cmd = Cmd
    69  	}
    70  
    71  	job.GetenvJson("Labels", &config.Labels)
    72  
    73  	if Entrypoint := job.GetenvList("Entrypoint"); Entrypoint != nil {
    74  		config.Entrypoint = Entrypoint
    75  	}
    76  	return config
    77  }