Skip to content

Commit

Permalink
Merge pull request #26941 from runcom/docker-init-path-1
Browse files Browse the repository at this point in the history
configure docker-init binary path
  • Loading branch information
thaJeztah committed Sep 28, 2016
2 parents b0e1b8f + 6a12685 commit 9f05939
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 3 deletions.
3 changes: 3 additions & 0 deletions api/types/container/host_config.go
Expand Up @@ -324,4 +324,7 @@ type HostConfig struct {

// Run a custom init inside the container, if null, use the daemon's configured settings
Init *bool `json:",omitempty"`

// Custom init path
InitPath string `json:",omitempty"`
}
2 changes: 2 additions & 0 deletions daemon/config_unix.go
Expand Up @@ -36,6 +36,7 @@ type Config struct {
DefaultRuntime string `json:"default-runtime,omitempty"`
OOMScoreAdjust int `json:"oom-score-adjust,omitempty"`
Init bool `json:"init,omitempty"`
InitPath string `json:"init-path,omitempty"`
}

// bridgeConfig stores all the bridge driver specific
Expand Down Expand Up @@ -93,6 +94,7 @@ func (config *Config) InstallFlags(flags *pflag.FlagSet) {
flags.StringVar(&config.DefaultRuntime, "default-runtime", stockRuntimeName, "Default OCI runtime for containers")
flags.IntVar(&config.OOMScoreAdjust, "oom-score-adjust", -500, "Set the oom_score_adj for the daemon")
flags.BoolVar(&config.Init, "init", false, "Run an init in the container to forward signals and reap processes")
flags.StringVar(&config.InitPath, "init-path", "", "Path to the docker-init binary")

config.attachExperimentalFlags(flags)
}
Expand Down
15 changes: 12 additions & 3 deletions daemon/oci_linux.go
Expand Up @@ -594,9 +594,18 @@ func (daemon *Daemon) populateCommonSpec(s *specs.Spec, c *container.Container)
if (c.HostConfig.Init != nil && *c.HostConfig.Init) ||
(c.HostConfig.Init == nil && daemon.configStore.Init) {
s.Process.Args = append([]string{"/dev/init", c.Path}, c.Args...)
path, err := exec.LookPath("docker-init")
if err != nil {
return err
var path string
if daemon.configStore.InitPath == "" && c.HostConfig.InitPath == "" {
path, err = exec.LookPath("docker-init")
if err != nil {
return err
}
}
if daemon.configStore.InitPath != "" {
path = daemon.configStore.InitPath
}
if c.HostConfig.InitPath != "" {
path = c.HostConfig.InitPath
}
s.Mounts = append(s.Mounts, specs.Mount{
Destination: "/dev/init",
Expand Down
2 changes: 2 additions & 0 deletions docs/reference/commandline/dockerd.md
Expand Up @@ -49,6 +49,7 @@ Options:
--help Print usage
--icc=true Enable inter-container communication
--init Run an init inside containers to forward signals and reap processes
--init-path Path to the docker-init binary
--insecure-registry=[] Enable insecure registry communication
--ip=0.0.0.0 Default IP when binding container ports
--ip-forward=true Enable net.ipv4.ip_forward
Expand Down Expand Up @@ -1142,6 +1143,7 @@ This is a full example of the allowed configuration options on Linux:
"cgroup-parent": "",
"default-ulimits": {},
"init": false,
"init-path": "/usr/libexec/docker-init",
"ipv6": false,
"iptables": false,
"ip-forward": false,
Expand Down
4 changes: 4 additions & 0 deletions man/dockerd.8.md
Expand Up @@ -35,6 +35,7 @@ dockerd - Enable daemon mode
[**--help**]
[**--icc**[=*true*]]
[**--init**[=*false*]]
[**--init-path**[=*""*]]
[**--insecure-registry**[=*[]*]]
[**--ip**[=*0.0.0.0*]]
[**--ip-forward**[=*true*]]
Expand Down Expand Up @@ -170,6 +171,9 @@ unix://[/path/to/socket] to use.
**--init**
Run an init process inside containers for signal forwarding and process reaping.

**--init-path**
Path to the docker-init binary.

**--insecure-registry**=[]
Enable insecure registry communication, i.e., enable un-encrypted and/or untrusted communication.

Expand Down
2 changes: 2 additions & 0 deletions runconfig/opts/parse.go
Expand Up @@ -104,6 +104,7 @@ type ContainerOptions struct {
runtime string
autoRemove bool
init bool
initPath string

Image string
Args []string
Expand Down Expand Up @@ -246,6 +247,7 @@ func AddFlags(flags *pflag.FlagSet) *ContainerOptions {
flags.StringVar(&copts.runtime, "runtime", "", "Runtime to use for this container")

flags.BoolVar(&copts.init, "init", false, "Run an init inside the container that forwards signals and reaps processes")
flags.StringVar(&copts.initPath, "init-path", "", "Path to the docker-init binary")
return copts
}

Expand Down

0 comments on commit 9f05939

Please sign in to comment.