func newDockerClient()

in ecs-init/docker/dependencies.go [68:94]


func newDockerClient(dockerClientFactory dockerClientFactory, pingBackoff backoff.Backoff) (dockerclient, error) {
	dockerUnixSocketSourcePath, fromEnv := config.DockerUnixSocket()
	if !fromEnv {
		dockerUnixSocketSourcePath = "/var/run/docker.sock"
	}
	client, err := dockerClientFactory.NewVersionedClient(
		config.UnixSocketPrefix+dockerUnixSocketSourcePath, dockerClientAPIVersion)
	if err != nil {
		return nil, err
	}
	for {
		err = client.Ping()
		if err == nil {
			break
		}
		shouldRetry := (isNetworkError(err) || isRetryablePingError(err)) && pingBackoff.ShouldRetry()
		if !shouldRetry {
			break
		}
		backoffDuration := pingBackoff.Duration()
		log.Infof("Error connecting to docker, backing off for %s, error: %s", backoffDuration, err)
		time.Sleep(backoffDuration)
	}
	return &_dockerclient{
		docker: client,
	}, err
}