Documentation
¶
Overview ¶
Package docker provides a Docker driver for Fn. Provides an implementation of
github.com/fnproject/fn/api/agent/drivers.Driver
that knows how to run Docker images.
Index ¶
- Constants
- Variables
- func RecordImageCleanerStats(ctx context.Context, sample *ImageCacherStats)
- func RecordInstanceId(ctx context.Context, id string)
- func RecordWaitContainerResult(ctx context.Context, exitCode int)
- func RegisterViews(tagKeys []string, latencyDist []float64)
- type Auther
- type CachedImage
- type DockerDriver
- func (drv *DockerDriver) Close() error
- func (drv *DockerDriver) CreateCookie(ctx context.Context, task drivers.ContainerTask) (drivers.Cookie, error)
- func (drv *DockerDriver) GetSlotKeyExtensions(extn map[string]string) string
- func (drv *DockerDriver) SetPullImageRetryPolicy(policy common.BackOffConfig, checker drivers.RetryErrorChecker) error
- type DockerNetworks
- type DockerPool
- type DockerPoolStats
- type ImageCacher
- type ImageCacherStats
- type ImagePuller
- type PoolTaskStateType
Constants ¶
View Source
const ( FnUserId = 1000 FnGroupId = 1000 )
View Source
const ( FnAgentClassifierLabel = "fn-agent-classifier" FnAgentInstanceLabel = "fn-agent-instance" )
View Source
const ( LimitPerSec = 10 LimitBurst = 20 )
Variables ¶
View Source
var ( ErrImageWithVolume = models.NewAPIError(http.StatusBadRequest, errors.New("image has Volume definition")) // FnDockerUser is used as the runtime user/group when running docker containers. // This is not configurable at the moment, because some fdks require that user/group to be present in the container. FnDockerUser = fmt.Sprintf("%v:%v", FnUserId, FnGroupId) )
View Source
var (
ErrorPoolEmpty = errors.New("docker pre fork pool empty")
)
Functions ¶
func RecordImageCleanerStats ¶ added in v0.3.647
func RecordImageCleanerStats(ctx context.Context, sample *ImageCacherStats)
func RecordInstanceId ¶ added in v0.3.647
func RegisterViews ¶
RegisterViews creates and registers views with provided tag keys
Types ¶
type Auther ¶
type Auther interface {
// DockerAuth should return docker auth credentials that will authenticate
// against a docker registry for a given drivers.ContainerTask.Image(). An
// error may be returned which will cause the task not to be run, this can be
// useful for an implementer to do things like testing auth configurations
// before returning them; e.g. if the implementer would like to impose
// certain restrictions on images or if credentials must be acquired right
// before runtime and there's an error doing so. If these credentials don't
// work, the docker pull will fail and the task will be set to error status.
DockerAuth(ctx context.Context, image string) (*docker.AuthConfiguration, error)
}
Auther may by implemented by a drivers.ContainerTask if it would like to use not-necessarily-public docker images for any or all task invocations.
type CachedImage ¶ added in v0.3.645
type DockerDriver ¶
type DockerDriver struct {
// contains filtered or unexported fields
}
DockerDriver implements drivers.Driver via the docker http API
func NewDocker ¶
func NewDocker(conf drivers.Config) *DockerDriver
NewDocker implements drivers.Driver
func (*DockerDriver) Close ¶
func (drv *DockerDriver) Close() error
func (*DockerDriver) CreateCookie ¶
func (drv *DockerDriver) CreateCookie(ctx context.Context, task drivers.ContainerTask) (drivers.Cookie, error)
func (*DockerDriver) GetSlotKeyExtensions ¶ added in v0.3.720
func (drv *DockerDriver) GetSlotKeyExtensions(extn map[string]string) string
func (*DockerDriver) SetPullImageRetryPolicy ¶ added in v0.3.673
func (drv *DockerDriver) SetPullImageRetryPolicy(policy common.BackOffConfig, checker drivers.RetryErrorChecker) error
type DockerNetworks ¶ added in v0.3.659
type DockerNetworks struct {
// contains filtered or unexported fields
}
func NewDockerNetworks ¶ added in v0.3.659
func NewDockerNetworks(conf drivers.Config) *DockerNetworks
func (*DockerNetworks) AllocNetwork ¶ added in v0.3.659
func (n *DockerNetworks) AllocNetwork() string
pick least used network
func (*DockerNetworks) FreeNetwork ¶ added in v0.3.659
func (n *DockerNetworks) FreeNetwork(id string)
unregister network
type DockerPool ¶
type DockerPool interface {
// fetch a pre-allocated free id from the pool
// may return too busy error.
AllocPoolId() (string, error)
// Release the id back to the pool
FreePoolId(id string)
// stop and terminate the pool
Close() error
// returns inuse versus free
Usage() DockerPoolStats
}
func NewDockerPool ¶
func NewDockerPool(conf drivers.Config, driver *DockerDriver) DockerPool
type DockerPoolStats ¶
type DockerPoolStats struct {
// contains filtered or unexported fields
}
type ImageCacher ¶ added in v0.3.645
type ImageCacher interface {
// IsMaxCapacity returns true if total size of all images exceeds the limit
// and if there's an image in LRU cache that can be removed.
IsMaxCapacity() bool
// GetNotifier returns a channel that can be monitored. The channel will return
// data every time IsMaxCapacity() flips from false to true state.
GetNotifier() <-chan struct{}
// Removes an image from the LRU cache if cache is not empty
Pop() *CachedImage
// Update adds an image to the LRU cache if the image is not marked in-use
Update(img *CachedImage)
// Mark/Unmark an image in-use. If an image is in-use, it will
// not be a candidate in LRU. When the reference count of the
// image drops to zero (via MarkFree() calls), the image will
// be added back to LRU.
MarkBusy(img *CachedImage)
MarkFree(img *CachedImage)
// Stats Monitoring
GetStats() *ImageCacherStats
}
func NewImageCache ¶ added in v0.3.645
func NewImageCache(exemptTags []string, maxSize uint64) ImageCacher
type ImageCacherStats ¶ added in v0.3.647
type ImagePuller ¶ added in v0.3.672
type ImagePuller interface {
PullImage(ctx context.Context, cfg *docker.AuthConfiguration, img, repo, tag string) chan error
SetRetryPolicy(policy common.BackOffConfig, checker drivers.RetryErrorChecker) error
}
func NewImagePuller ¶ added in v0.3.672
func NewImagePuller(docker dockerClient) ImagePuller
type PoolTaskStateType ¶
type PoolTaskStateType int
const ( PoolTaskStateInit PoolTaskStateType = iota // initializing PoolTaskStateReady // ready to be run )
Click to show internal directories.
Click to hide internal directories.