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
}