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
}