docker/docker_client.go
func newDockerClient(sys *types.SystemContext, registry, reference string) (*dockerClient, error) {
	hostName := registry
	if registry == dockerHostname {
		registry = dockerRegistry
	}
	tlsClientConfig := serverDefault()

	// It is undefined whether the host[:port] string for dockerHostname should be dockerHostname or dockerRegistry,
	// because docker/docker does not read the certs.d subdirectory at all in that case.  We use the user-visible
	// dockerHostname here, because it is more symmetrical to read the configuration in that case as well, and because
	// generally the UI hides the existence of the different dockerRegistry.  But note that this behavior is
	// undocumented and may change if docker/docker changes.
	certDir, err := dockerCertDir(sys, hostName)
	if err != nil {
		return nil, err
	}
	if err := tlsclientconfig.SetupCertificates(certDir, tlsClientConfig); err != nil {
		return nil, err
	}

	// Check if TLS verification shall be skipped (default=false) which can
	// be specified in the sysregistriesv2 configuration.
	skipVerify := false
	reg, err := sysregistriesv2.FindRegistry(sys, reference)
	if err != nil {
		return nil, errors.Wrapf(err, "error loading registries")
	}
	if reg != nil {
		skipVerify = reg.Insecure
	}
	tlsClientConfig.InsecureSkipVerify = skipVerify

	return &dockerClient{
		sys:             sys,
		registry:        registry,
		tlsClientConfig: tlsClientConfig,
	}, nil
}
func newDockerClient(sys *types.SystemContext, registry, reference string) (*dockerClient, error) {
	hostName := registry
	if registry == dockerHostname {
		registry = dockerRegistry
	}
	tlsClientConfig := serverDefault()

	// It is undefined whether the host[:port] string for dockerHostname should be dockerHostname or dockerRegistry,
	// because docker/docker does not read the certs.d subdirectory at all in that case.  We use the user-visible
	// dockerHostname here, because it is more symmetrical to read the configuration in that case as well, and because
	// generally the UI hides the existence of the different dockerRegistry.  But note that this behavior is
	// undocumented and may change if docker/docker changes.
	certDir, err := dockerCertDir(sys, hostName)
	if err != nil {
		return nil, err
	}
	if err := tlsclientconfig.SetupCertificates(certDir, tlsClientConfig); err != nil {
		return nil, err
	}

	// Check if TLS verification shall be skipped (default=false) which can
	// be specified in the sysregistriesv2 configuration.
	skipVerify := false
	reg, err := sysregistriesv2.FindRegistry(sys, reference)
	if err != nil {
		return nil, errors.Wrapf(err, "error loading registries")
	}
	if reg != nil {
		skipVerify = reg.Insecure
	}
	tlsClientConfig.InsecureSkipVerify = skipVerify

	return &dockerClient{
		sys:             sys,
		registry:        registry,
		tlsClientConfig: tlsClientConfig,
	}, nil
}
func newDockerClient ( sys * types . SystemContext , registry , reference string ) ( * dockerClient , error ) { hostName := registry if registry == dockerHostname { registry = dockerRegistry } tlsClientConfig := serverDefault ( ) // It is undefined whether the host[:port] string for dockerHostname should be dockerHostname or dockerRegistry, // because docker/docker does not read the certs.d subdirectory at all in that case.  We use the user-visible // dockerHostname here, because it is more symmetrical to read the configuration in that case as well, and because // generally the UI hides the existence of the different dockerRegistry.  But note that this behavior is // undocumented and may change if docker/docker changes. certDir , err := dockerCertDir ( sys , hostName ) if err != nil { return nil , err } if err := tlsclientconfig . SetupCertificates ( certDir , tlsClientConfig ) ; err != nil { return nil , err } // Check if TLS verification shall be skipped (default=false) which can // be specified in the sysregistriesv2 configuration. skipVerify := false reg , err := sysregistriesv2 . FindRegistry ( sys , reference ) if err != nil { return nil , errors . Wrapf ( err , " " ) } if reg != nil { skipVerify = reg . Insecure } tlsClientConfig . InsecureSkipVerify = skipVerify return & dockerClient { sys : sys , registry : registry , tlsClientConfig : tlsClientConfig , } , nil }
// newDockerClient returns a new dockerClient instance for the given registry
// and reference.  The reference is used to query the registry configuration
// and can either be a registry (e.g, "registry.com[:5000]"), a repository
// (e.g., "registry.com[:5000][/some/namespace]/repo").
// Please note that newDockerClient does not set all members of dockerClient
// (e.g., username and password); those must be set by callers if necessary.
newDockerClient returns a new dockerClient instance for the given registry and reference . The reference is used to query the registry configuration and can either be a registry ( e . g registry . com [ : 5000 ] ) a repository ( e . g . registry . com [ : 5000 ] [ / some / namespace ] / repo ) . Please note that newDockerClient does not set all members of dockerClient ( e . g . username and password ) ; those must be set by callers if necessary .