1
0
mirror of https://github.com/rancher/os.git synced 2025-07-05 02:56:13 +00:00
os/pkg/init/docker/docker.go
2018-10-11 10:25:30 +08:00

54 lines
1.2 KiB
Go

package docker
import (
"syscall"
"github.com/rancher/os/config"
"github.com/rancher/os/pkg/dfs"
)
func Start(cfg *config.CloudConfig) (chan interface{}, error) {
launchConfig, args := GetLaunchConfig(cfg, &cfg.Rancher.BootstrapDocker)
launchConfig.Fork = true
launchConfig.LogFile = ""
launchConfig.NoLog = true
cmd, err := dfs.LaunchDocker(launchConfig, config.SystemDockerBin, args...)
if err != nil {
return nil, err
}
c := make(chan interface{})
go func() {
<-c
cmd.Process.Signal(syscall.SIGTERM)
cmd.Wait()
c <- struct{}{}
}()
return c, nil
}
func Stop(c chan interface{}) error {
c <- struct{}{}
<-c
return nil
}
func GetLaunchConfig(cfg *config.CloudConfig, dockerCfg *config.DockerConfig) (*dfs.Config, []string) {
var launchConfig dfs.Config
args := dfs.ParseConfig(&launchConfig, dockerCfg.FullArgs()...)
launchConfig.DNSConfig.Nameservers = cfg.Rancher.Defaults.Network.DNS.Nameservers
launchConfig.DNSConfig.Search = cfg.Rancher.Defaults.Network.DNS.Search
launchConfig.Environment = dockerCfg.Environment
if !cfg.Rancher.Debug {
launchConfig.LogFile = cfg.Rancher.Defaults.SystemDockerLogs
}
return &launchConfig, args
}