259 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			259 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Go
		
	
	
	
| package docker
 | |
| 
 | |
| //
 | |
| //  Types extracted from Docker
 | |
| //
 | |
| 
 | |
| import (
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/containers/image/v5/pkg/strslice"
 | |
| 	digest "github.com/opencontainers/go-digest"
 | |
| )
 | |
| 
 | |
| // github.com/moby/moby/image/rootfs.go
 | |
| const TypeLayers = "layers"
 | |
| 
 | |
| // github.com/docker/distribution/manifest/schema2/manifest.go
 | |
| const V2S2MediaTypeUncompressedLayer = "application/vnd.docker.image.rootfs.diff.tar"
 | |
| 
 | |
| // github.com/moby/moby/image/rootfs.go
 | |
| // V2S2RootFS describes images root filesystem
 | |
| // This is currently a placeholder that only supports layers. In the future
 | |
| // this can be made into an interface that supports different implementations.
 | |
| type V2S2RootFS struct {
 | |
| 	Type    string          `json:"type"`
 | |
| 	DiffIDs []digest.Digest `json:"diff_ids,omitempty"`
 | |
| }
 | |
| 
 | |
| // github.com/moby/moby/image/image.go
 | |
| // V2S2History stores build commands that were used to create an image
 | |
| type V2S2History struct {
 | |
| 	// Created is the timestamp at which the image was created
 | |
| 	Created time.Time `json:"created"`
 | |
| 	// Author is the name of the author that was specified when committing the image
 | |
| 	Author string `json:"author,omitempty"`
 | |
| 	// CreatedBy keeps the Dockerfile command used while building the image
 | |
| 	CreatedBy string `json:"created_by,omitempty"`
 | |
| 	// Comment is the commit message that was set when committing the image
 | |
| 	Comment string `json:"comment,omitempty"`
 | |
| 	// EmptyLayer is set to true if this history item did not generate a
 | |
| 	// layer. Otherwise, the history item is associated with the next
 | |
| 	// layer in the RootFS section.
 | |
| 	EmptyLayer bool `json:"empty_layer,omitempty"`
 | |
| }
 | |
| 
 | |
| // github.com/moby/moby/image/image.go
 | |
| // ID is the content-addressable ID of an image.
 | |
| type ID digest.Digest
 | |
| 
 | |
| // github.com/moby/moby/api/types/container/config.go
 | |
| // HealthConfig holds configuration settings for the HEALTHCHECK feature.
 | |
| type HealthConfig struct {
 | |
| 	// Test is the test to perform to check that the container is healthy.
 | |
| 	// An empty slice means to inherit the default.
 | |
| 	// The options are:
 | |
| 	// {} : inherit healthcheck
 | |
| 	// {"NONE"} : disable healthcheck
 | |
| 	// {"CMD", args...} : exec arguments directly
 | |
| 	// {"CMD-SHELL", command} : run command with system's default shell
 | |
| 	Test []string `json:",omitempty"`
 | |
| 
 | |
| 	// Zero means to inherit. Durations are expressed as integer nanoseconds.
 | |
| 	Interval    time.Duration `json:",omitempty"` // Interval is the time to wait between checks.
 | |
| 	Timeout     time.Duration `json:",omitempty"` // Timeout is the time to wait before considering the check to have hung.
 | |
| 	StartPeriod time.Duration `json:",omitempty"` // Time to wait after the container starts before running the first check.
 | |
| 
 | |
| 	// Retries is the number of consecutive failures needed to consider a container as unhealthy.
 | |
| 	// Zero means inherit.
 | |
| 	Retries int `json:",omitempty"`
 | |
| }
 | |
| 
 | |
| // github.com/docker/go-connections/nat/nat.go
 | |
| // PortSet is a collection of structs indexed by Port
 | |
| type PortSet map[Port]struct{}
 | |
| 
 | |
| // github.com/docker/go-connections/nat/nat.go
 | |
| // Port is a string containing port number and protocol in the format "80/tcp"
 | |
| type Port string
 | |
| 
 | |
| // github.com/moby/moby/api/types/container/config.go
 | |
| // Config contains the configuration data about a container.
 | |
| // It should hold only portable information about the container.
 | |
| // Here, "portable" means "independent from the host we are running on".
 | |
| // Non-portable information *should* appear in HostConfig.
 | |
| // All fields added to this struct must be marked `omitempty` to keep getting
 | |
| // predictable hashes from the old `v1Compatibility` configuration.
 | |
| type Config struct {
 | |
| 	Hostname        string              // Hostname
 | |
| 	Domainname      string              // Domainname
 | |
| 	User            string              // User that will run the command(s) inside the container, also support user:group
 | |
| 	AttachStdin     bool                // Attach the standard input, makes possible user interaction
 | |
| 	AttachStdout    bool                // Attach the standard output
 | |
| 	AttachStderr    bool                // Attach the standard error
 | |
| 	ExposedPorts    PortSet             `json:",omitempty"` // List of exposed ports
 | |
| 	Tty             bool                // Attach standard streams to a tty, including stdin if it is not closed.
 | |
| 	OpenStdin       bool                // Open stdin
 | |
| 	StdinOnce       bool                // If true, close stdin after the 1 attached client disconnects.
 | |
| 	Env             []string            // List of environment variable to set in the container
 | |
| 	Cmd             strslice.StrSlice   // Command to run when starting the container
 | |
| 	Healthcheck     *HealthConfig       `json:",omitempty"` // Healthcheck describes how to check the container is healthy
 | |
| 	ArgsEscaped     bool                `json:",omitempty"` // True if command is already escaped (Windows specific)
 | |
| 	Image           string              // Name of the image as it was passed by the operator (e.g. could be symbolic)
 | |
| 	Volumes         map[string]struct{} // List of volumes (mounts) used for the container
 | |
| 	WorkingDir      string              // Current directory (PWD) in the command will be launched
 | |
| 	Entrypoint      strslice.StrSlice   // Entrypoint to run when starting the container
 | |
| 	NetworkDisabled bool                `json:",omitempty"` // Is network disabled
 | |
| 	MacAddress      string              `json:",omitempty"` // Mac Address of the container
 | |
| 	OnBuild         []string            // ONBUILD metadata that were defined on the image Dockerfile
 | |
| 	Labels          map[string]string   // List of labels set to this container
 | |
| 	StopSignal      string              `json:",omitempty"` // Signal to stop a container
 | |
| 	StopTimeout     *int                `json:",omitempty"` // Timeout (in seconds) to stop a container
 | |
| 	Shell           strslice.StrSlice   `json:",omitempty"` // Shell for shell-form of RUN, CMD, ENTRYPOINT
 | |
| }
 | |
| 
 | |
| // github.com/docker/distribution/manifest/schema1/config_builder.go
 | |
| // For non-top-level layers, create fake V1Compatibility strings that
 | |
| // fit the format and don't collide with anything else, but don't
 | |
| // result in runnable images on their own.
 | |
| type V1Compatibility struct {
 | |
| 	ID              string    `json:"id"`
 | |
| 	Parent          string    `json:"parent,omitempty"`
 | |
| 	Comment         string    `json:"comment,omitempty"`
 | |
| 	Created         time.Time `json:"created"`
 | |
| 	ContainerConfig struct {
 | |
| 		Cmd []string
 | |
| 	} `json:"container_config,omitempty"`
 | |
| 	Author    string `json:"author,omitempty"`
 | |
| 	ThrowAway bool   `json:"throwaway,omitempty"`
 | |
| }
 | |
| 
 | |
| // github.com/moby/moby/image/image.go
 | |
| // V1Image stores the V1 image configuration.
 | |
| type V1Image struct {
 | |
| 	// ID is a unique 64 character identifier of the image
 | |
| 	ID string `json:"id,omitempty"`
 | |
| 	// Parent is the ID of the parent image
 | |
| 	Parent string `json:"parent,omitempty"`
 | |
| 	// Comment is the commit message that was set when committing the image
 | |
| 	Comment string `json:"comment,omitempty"`
 | |
| 	// Created is the timestamp at which the image was created
 | |
| 	Created time.Time `json:"created"`
 | |
| 	// Container is the id of the container used to commit
 | |
| 	Container string `json:"container,omitempty"`
 | |
| 	// ContainerConfig is the configuration of the container that is committed into the image
 | |
| 	ContainerConfig Config `json:"container_config,omitempty"`
 | |
| 	// DockerVersion specifies the version of Docker that was used to build the image
 | |
| 	DockerVersion string `json:"docker_version,omitempty"`
 | |
| 	// Author is the name of the author that was specified when committing the image
 | |
| 	Author string `json:"author,omitempty"`
 | |
| 	// Config is the configuration of the container received from the client
 | |
| 	Config *Config `json:"config,omitempty"`
 | |
| 	// Architecture is the hardware that the image is build and runs on
 | |
| 	Architecture string `json:"architecture,omitempty"`
 | |
| 	// Variant is a variant of the CPU that the image is built and runs on
 | |
| 	Variant string `json:"variant,omitempty"`
 | |
| 	// OS is the operating system used to build and run the image
 | |
| 	OS string `json:"os,omitempty"`
 | |
| 	// Size is the total size of the image including all layers it is composed of
 | |
| 	Size int64 `json:",omitempty"`
 | |
| }
 | |
| 
 | |
| // github.com/moby/moby/image/image.go
 | |
| // V2Image stores the image configuration
 | |
| type V2Image struct {
 | |
| 	V1Image
 | |
| 	Parent     ID            `json:"parent,omitempty"` // nolint:govet
 | |
| 	RootFS     *V2S2RootFS   `json:"rootfs,omitempty"`
 | |
| 	History    []V2S2History `json:"history,omitempty"`
 | |
| 	OSVersion  string        `json:"os.version,omitempty"`
 | |
| 	OSFeatures []string      `json:"os.features,omitempty"`
 | |
| }
 | |
| 
 | |
| // github.com/docker/distribution/manifest/versioned.go
 | |
| // V2Versioned provides a struct with the manifest schemaVersion and mediaType.
 | |
| // Incoming content with unknown schema version can be decoded against this
 | |
| // struct to check the version.
 | |
| type V2Versioned struct {
 | |
| 	// SchemaVersion is the image manifest schema that this image follows
 | |
| 	SchemaVersion int `json:"schemaVersion"`
 | |
| 
 | |
| 	// MediaType is the media type of this schema.
 | |
| 	MediaType string `json:"mediaType,omitempty"`
 | |
| }
 | |
| 
 | |
| // github.com/docker/distribution/manifest/schema1/manifest.go
 | |
| // V2S1FSLayer is a container struct for BlobSums defined in an image manifest
 | |
| type V2S1FSLayer struct {
 | |
| 	// BlobSum is the tarsum of the referenced filesystem image layer
 | |
| 	BlobSum digest.Digest `json:"blobSum"`
 | |
| }
 | |
| 
 | |
| // github.com/docker/distribution/manifest/schema1/manifest.go
 | |
| // V2S1History stores unstructured v1 compatibility information
 | |
| type V2S1History struct {
 | |
| 	// V1Compatibility is the raw v1 compatibility information
 | |
| 	V1Compatibility string `json:"v1Compatibility"`
 | |
| }
 | |
| 
 | |
| // github.com/docker/distribution/manifest/schema1/manifest.go
 | |
| // V2S1Manifest provides the base accessible fields for working with V2 image
 | |
| // format in the registry.
 | |
| type V2S1Manifest struct {
 | |
| 	V2Versioned
 | |
| 
 | |
| 	// Name is the name of the image's repository
 | |
| 	Name string `json:"name"`
 | |
| 
 | |
| 	// Tag is the tag of the image specified by this manifest
 | |
| 	Tag string `json:"tag"`
 | |
| 
 | |
| 	// Architecture is the host architecture on which this image is intended to
 | |
| 	// run
 | |
| 	Architecture string `json:"architecture"`
 | |
| 
 | |
| 	// FSLayers is a list of filesystem layer blobSums contained in this image
 | |
| 	FSLayers []V2S1FSLayer `json:"fsLayers"`
 | |
| 
 | |
| 	// History is a list of unstructured historical data for v1 compatibility
 | |
| 	History []V2S1History `json:"history"`
 | |
| }
 | |
| 
 | |
| // github.com/docker/distribution/blobs.go
 | |
| // V2S2Descriptor describes targeted content. Used in conjunction with a blob
 | |
| // store, a descriptor can be used to fetch, store and target any kind of
 | |
| // blob. The struct also describes the wire protocol format. Fields should
 | |
| // only be added but never changed.
 | |
| type V2S2Descriptor struct {
 | |
| 	// MediaType describe the type of the content. All text based formats are
 | |
| 	// encoded as utf-8.
 | |
| 	MediaType string `json:"mediaType,omitempty"`
 | |
| 
 | |
| 	// Size in bytes of content.
 | |
| 	Size int64 `json:"size,omitempty"`
 | |
| 
 | |
| 	// Digest uniquely identifies the content. A byte stream can be verified
 | |
| 	// against against this digest.
 | |
| 	Digest digest.Digest `json:"digest,omitempty"`
 | |
| 
 | |
| 	// URLs contains the source URLs of this content.
 | |
| 	URLs []string `json:"urls,omitempty"`
 | |
| 
 | |
| 	// NOTE: Before adding a field here, please ensure that all
 | |
| 	// other options have been exhausted. Much of the type relationships
 | |
| 	// depend on the simplicity of this type.
 | |
| }
 | |
| 
 | |
| // github.com/docker/distribution/manifest/schema2/manifest.go
 | |
| // V2S2Manifest defines a schema2 manifest.
 | |
| type V2S2Manifest struct {
 | |
| 	V2Versioned
 | |
| 
 | |
| 	// Config references the image configuration as a blob.
 | |
| 	Config V2S2Descriptor `json:"config"`
 | |
| 
 | |
| 	// Layers lists descriptors for the layers referenced by the
 | |
| 	// configuration.
 | |
| 	Layers []V2S2Descriptor `json:"layers"`
 | |
| }
 |