docker/daemon_unix.go
8fb0ca2c
 // +build daemon,!windows
 
 package main
 
 import (
6578ad90
 	"fmt"
8fb0ca2c
 	"os"
677a6b35
 	"os/signal"
6578ad90
 	"syscall"
8fb0ca2c
 
31cb96dc
 	"github.com/Sirupsen/logrus"
8fb0ca2c
 	apiserver "github.com/docker/docker/api/server"
 	"github.com/docker/docker/daemon"
9c4570a9
 	"github.com/docker/docker/libcontainerd"
677a6b35
 	"github.com/docker/docker/pkg/mflag"
8fb0ca2c
 	"github.com/docker/docker/pkg/system"
 )
 
677a6b35
 const defaultDaemonConfigFile = "/etc/docker/daemon.json"
 
351f6b8e
 func setPlatformServerConfig(serverConfig *apiserver.Config, daemonCfg *daemon.Config) *apiserver.Config {
47c56e43
 	serverConfig.EnableCors = daemonCfg.EnableCors
 	serverConfig.CorsHeaders = daemonCfg.CorsHeaders
 
8fb0ca2c
 	return serverConfig
 }
 
 // currentUserIsOwner checks whether the current user is the owner of the given
 // file.
 func currentUserIsOwner(f string) bool {
 	if fileInfo, err := system.Stat(f); err == nil && fileInfo != nil {
7e420ad8
 		if int(fileInfo.UID()) == os.Getuid() {
8fb0ca2c
 			return true
 		}
 	}
 	return false
 }
6578ad90
 
 // setDefaultUmask sets the umask to 0022 to avoid problems
 // caused by custom umask
 func setDefaultUmask() error {
 	desiredUmask := 0022
 	syscall.Umask(desiredUmask)
 	if umask := syscall.Umask(desiredUmask); umask != desiredUmask {
 		return fmt.Errorf("failed to set umask: expected %#o, got %#o", desiredUmask, umask)
 	}
 
 	return nil
 }
9ed4400b
 
 func getDaemonConfDir() string {
 	return "/etc/docker"
 }
677a6b35
 
 // setupConfigReloadTrap configures the USR2 signal to reload the configuration.
 func setupConfigReloadTrap(configFile string, flags *mflag.FlagSet, reload func(*daemon.Config)) {
 	c := make(chan os.Signal, 1)
 	signal.Notify(c, syscall.SIGHUP)
 	go func() {
 		for range c {
31cb96dc
 			if err := daemon.ReloadConfiguration(configFile, flags, reload); err != nil {
 				logrus.Error(err)
 			}
677a6b35
 		}
 	}()
 }
9c4570a9
 
 func (cli *DaemonCli) getPlatformRemoteOptions() []libcontainerd.RemoteOption {
 	opts := []libcontainerd.RemoteOption{
 		libcontainerd.WithDebugLog(cli.Config.Debug),
 	}
 	if cli.Config.ContainerdAddr != "" {
 		opts = append(opts, libcontainerd.WithRemoteAddr(cli.Config.ContainerdAddr))
 	} else {
 		opts = append(opts, libcontainerd.WithStartDaemon(true))
 	}
f97f3e98
 	if daemon.UsingSystemd(cli.Config) {
 		args := []string{"--systemd-cgroup=true"}
 		opts = append(opts, libcontainerd.WithRuntimeArgs(args))
 	}
9c4570a9
 	return opts
 }