2018-02-05 21:05:59 +00:00
|
|
|
package registry // import "github.com/docker/docker/api/types/registry"
|
2016-09-06 18:18:12 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"net"
|
2017-05-01 23:17:35 +00:00
|
|
|
|
2017-05-16 21:22:16 +00:00
|
|
|
"github.com/opencontainers/image-spec/specs-go/v1"
|
2016-09-06 18:18:12 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// ServiceConfig stores daemon registry services configuration.
|
|
|
|
type ServiceConfig struct {
|
2017-05-09 21:00:31 +00:00
|
|
|
AllowNondistributableArtifactsCIDRs []*NetIPNet
|
|
|
|
AllowNondistributableArtifactsHostnames []string
|
|
|
|
InsecureRegistryCIDRs []*NetIPNet `json:"InsecureRegistryCIDRs"`
|
|
|
|
IndexConfigs map[string]*IndexInfo `json:"IndexConfigs"`
|
|
|
|
Mirrors []string
|
2016-09-06 18:18:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// NetIPNet is the net.IPNet type, which can be marshalled and
|
|
|
|
// unmarshalled to JSON
|
|
|
|
type NetIPNet net.IPNet
|
|
|
|
|
|
|
|
// String returns the CIDR notation of ipnet
|
|
|
|
func (ipnet *NetIPNet) String() string {
|
|
|
|
return (*net.IPNet)(ipnet).String()
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON returns the JSON representation of the IPNet
|
|
|
|
func (ipnet *NetIPNet) MarshalJSON() ([]byte, error) {
|
|
|
|
return json.Marshal((*net.IPNet)(ipnet).String())
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON sets the IPNet from a byte array of JSON
|
|
|
|
func (ipnet *NetIPNet) UnmarshalJSON(b []byte) (err error) {
|
|
|
|
var ipnetStr string
|
|
|
|
if err = json.Unmarshal(b, &ipnetStr); err == nil {
|
|
|
|
var cidr *net.IPNet
|
|
|
|
if _, cidr, err = net.ParseCIDR(ipnetStr); err == nil {
|
|
|
|
*ipnet = NetIPNet(*cidr)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// IndexInfo contains information about a registry
|
|
|
|
//
|
|
|
|
// RepositoryInfo Examples:
|
|
|
|
// {
|
|
|
|
// "Index" : {
|
|
|
|
// "Name" : "docker.io",
|
|
|
|
// "Mirrors" : ["https://registry-2.docker.io/v1/", "https://registry-3.docker.io/v1/"],
|
|
|
|
// "Secure" : true,
|
|
|
|
// "Official" : true,
|
|
|
|
// },
|
|
|
|
// "RemoteName" : "library/debian",
|
|
|
|
// "LocalName" : "debian",
|
|
|
|
// "CanonicalName" : "docker.io/debian"
|
|
|
|
// "Official" : true,
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// {
|
|
|
|
// "Index" : {
|
|
|
|
// "Name" : "127.0.0.1:5000",
|
|
|
|
// "Mirrors" : [],
|
|
|
|
// "Secure" : false,
|
|
|
|
// "Official" : false,
|
|
|
|
// },
|
|
|
|
// "RemoteName" : "user/repo",
|
|
|
|
// "LocalName" : "127.0.0.1:5000/user/repo",
|
|
|
|
// "CanonicalName" : "127.0.0.1:5000/user/repo",
|
|
|
|
// "Official" : false,
|
|
|
|
// }
|
|
|
|
type IndexInfo struct {
|
|
|
|
// Name is the name of the registry, such as "docker.io"
|
|
|
|
Name string
|
|
|
|
// Mirrors is a list of mirrors, expressed as URIs
|
|
|
|
Mirrors []string
|
|
|
|
// Secure is set to false if the registry is part of the list of
|
|
|
|
// insecure registries. Insecure registries accept HTTP and/or accept
|
|
|
|
// HTTPS with certificates from unknown CAs.
|
|
|
|
Secure bool
|
|
|
|
// Official indicates whether this is an official registry
|
|
|
|
Official bool
|
|
|
|
}
|
|
|
|
|
|
|
|
// SearchResult describes a search result returned from a registry
|
|
|
|
type SearchResult struct {
|
|
|
|
// StarCount indicates the number of stars this repository has
|
|
|
|
StarCount int `json:"star_count"`
|
|
|
|
// IsOfficial is true if the result is from an official repository.
|
|
|
|
IsOfficial bool `json:"is_official"`
|
|
|
|
// Name is the name of the repository
|
|
|
|
Name string `json:"name"`
|
|
|
|
// IsAutomated indicates whether the result is automated
|
|
|
|
IsAutomated bool `json:"is_automated"`
|
|
|
|
// Description is a textual description of the repository
|
|
|
|
Description string `json:"description"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// SearchResults lists a collection search results returned from a registry
|
|
|
|
type SearchResults struct {
|
|
|
|
// Query contains the query string that generated the search results
|
|
|
|
Query string `json:"query"`
|
|
|
|
// NumResults indicates the number of results the query returned
|
|
|
|
NumResults int `json:"num_results"`
|
|
|
|
// Results is a slice containing the actual results for the search
|
|
|
|
Results []SearchResult `json:"results"`
|
|
|
|
}
|
2017-05-01 23:17:35 +00:00
|
|
|
|
|
|
|
// DistributionInspect describes the result obtained from contacting the
|
|
|
|
// registry to retrieve image metadata
|
|
|
|
type DistributionInspect struct {
|
2017-05-08 23:29:31 +00:00
|
|
|
// Descriptor contains information about the manifest, including
|
|
|
|
// the content addressable digest
|
2017-05-16 21:22:16 +00:00
|
|
|
Descriptor v1.Descriptor
|
2017-05-01 23:17:35 +00:00
|
|
|
// Platforms contains the list of platforms supported by the image,
|
|
|
|
// obtained by parsing the manifest
|
2017-05-16 21:22:16 +00:00
|
|
|
Platforms []v1.Platform
|
2017-05-01 23:17:35 +00:00
|
|
|
}
|