func NewDockerGoClient(sdkclientFactory sdkclientfactory.Factory,
	cfg *config.Config, ctx context.Context) (DockerClient, error) {
	// Ensure SDK client can connect to the Docker daemon.
	sdkclient, err := sdkclientFactory.GetDefaultClient()

	if err != nil {
		seelog.Errorf("DockerGoClient: Docker SDK client unable to connect to Docker daemon. "+
			"Ensure Docker is running: %v", err)
		return nil, err
	}

	// Even if we have a DockerClient, the daemon might not be running. Ping from both clients
	// to ensure it's up.
	_, err = sdkclient.Ping(ctx)
	if err != nil {
		seelog.Errorf("DockerGoClient: Docker SDK client unable to ping Docker daemon. "+
			"Ensure Docker is running: %v", err)
		return nil, err
	}

	var dockerAuthData json.RawMessage
	if cfg.EngineAuthData != nil {
		dockerAuthData = cfg.EngineAuthData.Contents()
	}
	return &dockerGoClient{
		sdkClientFactory: sdkclientFactory,
		auth:             dockerauth.NewDockerAuthProvider(cfg.EngineAuthType, dockerAuthData),
		ecrClientFactory: ecr.NewECRFactory(cfg.AcceptInsecureCert),
		ecrTokenCache:    async.NewLRUCache(tokenCacheSize, tokenCacheTTL),
		config:           cfg,
		context:          ctx,
		imagePullBackoff: retry.NewExponentialBackoff(minimumPullRetryDelay, maximumPullRetryDelay,
			pullRetryJitterMultiplier, pullRetryDelayMultiplier),
	}, nil
}
func NewDockerGoClient(sdkclientFactory sdkclientfactory.Factory,
	cfg *config.Config, ctx context.Context) (DockerClient, error) {
	
	sdkclient, err := sdkclientFactory.GetDefaultClient()

	if err != nil {
		seelog.Errorf("DockerGoClient: Docker SDK client unable to connect to Docker daemon. "+
			"Ensure Docker is running: %v", err)
		return nil, err
	}

	
	
	_, err = sdkclient.Ping(ctx)
	if err != nil {
		seelog.Errorf("DockerGoClient: Docker SDK client unable to ping Docker daemon. "+
			"Ensure Docker is running: %v", err)
		return nil, err
	}

	var dockerAuthData json.RawMessage
	if cfg.EngineAuthData != nil {
		dockerAuthData = cfg.EngineAuthData.Contents()
	}
	return &dockerGoClient{
		sdkClientFactory: sdkclientFactory,
		auth:             dockerauth.NewDockerAuthProvider(cfg.EngineAuthType, dockerAuthData),
		ecrClientFactory: ecr.NewECRFactory(cfg.AcceptInsecureCert),
		ecrTokenCache:    async.NewLRUCache(tokenCacheSize, tokenCacheTTL),
		config:           cfg,
		context:          ctx,
		imagePullBackoff: retry.NewExponentialBackoff(minimumPullRetryDelay, maximumPullRetryDelay,
			pullRetryJitterMultiplier, pullRetryDelayMultiplier),
	}, nil
}
func NewDockerGoClient ( sdkclientFactory sdkclientfactory . Factory , cfg * config . Config , ctx context . Context ) ( DockerClient , error ) { // Ensure SDK client can connect to the Docker daemon. sdkclient , err := sdkclientFactory . GetDefaultClient ( ) if err != nil { seelog . Errorf ( " " + " " , err ) return nil , err } // Even if we have a DockerClient, the daemon might not be running. Ping from both clients // to ensure it's up. _ , err = sdkclient . Ping ( ctx ) if err != nil { seelog . Errorf ( " " + " " , err ) return nil , err } var dockerAuthData json . RawMessage if cfg . EngineAuthData != nil { dockerAuthData = cfg . EngineAuthData . Contents ( ) } return & dockerGoClient { sdkClientFactory : sdkclientFactory , auth : dockerauth . NewDockerAuthProvider ( cfg . EngineAuthType , dockerAuthData ) , ecrClientFactory : ecr . NewECRFactory ( cfg . AcceptInsecureCert ) , ecrTokenCache : async . NewLRUCache ( tokenCacheSize , tokenCacheTTL ) , config : cfg , context : ctx , imagePullBackoff : retry . NewExponentialBackoff ( minimumPullRetryDelay , maximumPullRetryDelay , pullRetryJitterMultiplier , pullRetryDelayMultiplier ) , } , nil }
// NewDockerGoClient creates a new DockerGoClient
// TODO Remove clientfactory parameter once migration to Docker SDK is complete.
NewDockerGoClient creates a new DockerGoClient TODO Remove clientfactory parameter once migration to Docker SDK is complete .