func GetDefaultRunner()

in gce-containers-startup/runtime/runtime.go [89:116]


func GetDefaultRunner(osCommandRunner OsCommandRunner, metadataProvider metadata.Provider) (*ContainerRunner, error) {
	var dockerClient DockerApiClient
	var err error
	dockerClient, err = dockerapi.NewClient(DOCKER_UNIX_SOCKET, "", nil, nil)
	if err != nil {
		return nil, err
	}
	// In order to make container names and other randomly generated content
	// deterministic on the same machine during each restart cycle, we seed
	// the generator with hostname and boot time.
	var hostname string
	hostname, err = os.Hostname()
	if err != nil {
		return nil, err
	}
	var lastBootTime string
	lastBootTime, err = osCommandRunner.Run("who", "-b")
	if err != nil {
		return nil, err
	}
	hashedHostnameAndBoot := fnv.New64a()
	hashedHostnameAndBoot.Write([]byte(hostname))
	hashedHostnameAndBoot.Write([]byte(" * * * ")) // Some separator.
	hashedHostnameAndBoot.Write([]byte(lastBootTime))
	randEnv := rand.New(rand.NewSource(int64(hashedHostnameAndBoot.Sum64())))

	return &ContainerRunner{Client: dockerClient, RandEnv: randEnv, VolumesEnv: &volumes.Env{OsCommandRunner: osCommandRunner, MetadataProvider: metadataProvider}}, nil
}