| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- /*
- Copyright 2020 Docker Compose CLI authors
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- package containers
- import (
- "context"
- "io"
- "github.com/docker/compose-cli/formatter"
- )
- const (
- // RestartPolicyAny Always restarts
- RestartPolicyAny = "any"
- // RestartPolicyNone Never restarts
- RestartPolicyNone = "none"
- // RestartPolicyOnFailure Restarts only on failure
- RestartPolicyOnFailure = "on-failure"
- )
- // RestartPolicyList all available restart policy values
- var RestartPolicyList = []string{RestartPolicyNone, RestartPolicyAny, RestartPolicyOnFailure}
- // Container represents a created container
- type Container struct {
- ID string
- Status string
- Image string
- Command string
- CPUTime uint64
- MemoryUsage uint64
- PidsCurrent uint64
- PidsLimit uint64
- Config *RuntimeConfig `json:",omitempty"`
- HostConfig *HostConfig `json:",omitempty"`
- Ports []Port `json:",omitempty"`
- Platform string
- }
- // RuntimeConfig config of a created container
- type RuntimeConfig struct {
- Labels []string `json:",omitempty"`
- Env map[string]string `json:",omitempty"`
- // FQDN is the fqdn to use
- FQDN string `json:"fqdn,omitempty"`
- }
- // HostConfig config of the container host
- type HostConfig struct {
- RestartPolicy string
- CPULimit float64
- MemoryLimit uint64
- }
- // Port represents a published port of a container
- type Port struct {
- // HostPort is the port number on the host
- HostPort uint32
- // ContainerPort is the port number inside the container
- ContainerPort uint32
- // Protocol is the protocol of the port mapping
- Protocol string
- // HostIP is the host ip to use
- HostIP string
- }
- // ContainerConfig contains the configuration data about a container
- type ContainerConfig struct {
- // ID uniquely identifies the container
- ID string
- // Image specifies the iamge reference used for a container
- Image string
- // Command are the arguments passed to the container's entrypoint
- Command []string
- // Ports provide a list of published ports
- Ports []Port
- // Labels set labels to the container
- Labels map[string]string
- // Volumes to be mounted
- Volumes []string
- // Memlimit
- MemLimit formatter.MemBytes
- // CPUlimit
- CPULimit float64
- // Environment variables
- Environment []string
- // Restart policy condition
- RestartPolicyCondition string
- // DomainName Container NIS domain name
- DomainName string
- }
- // ExecRequest contaiens configuration about an exec request
- type ExecRequest struct {
- Stdin io.Reader
- Stdout io.Writer
- Stderr io.Writer
- Command string
- Interactive bool
- Tty bool
- }
- // LogsRequest contains configuration about a log request
- type LogsRequest struct {
- Follow bool
- Tail string
- Width int
- Writer io.Writer
- }
- // DeleteRequest contains configuration about a delete request
- type DeleteRequest struct {
- Force bool
- }
- // Service interacts with the underlying container backend
- type Service interface {
- // List returns all the containers
- List(ctx context.Context, all bool) ([]Container, error)
- // Start starts a stopped container
- Start(ctx context.Context, containerID string) error
- // Stop stops the running container
- Stop(ctx context.Context, containerID string, timeout *uint32) error
- // Kill stops the running container
- Kill(ctx context.Context, containerID string, signal string) error
- // Run creates and starts a container
- Run(ctx context.Context, config ContainerConfig) error
- // Exec executes a command inside a running container
- Exec(ctx context.Context, containerName string, request ExecRequest) error
- // Logs returns all the logs of a container
- Logs(ctx context.Context, containerName string, request LogsRequest) error
- // Delete removes containers
- Delete(ctx context.Context, containerID string, request DeleteRequest) error
- // Inspect get a specific container
- Inspect(ctx context.Context, id string) (Container, error)
- }
|