Documentation
¶
Overview ¶
Package api provides the Docker-compatible HTTP API server.
Index ¶
- func GenerateSelfSignedCert(certFile, keyFile string) error
- func GracefulShutdown(ctx context.Context, server *http.Server, timeout time.Duration)
- func HealthHandler(w http.ResponseWriter, _ *http.Request)
- func HealthHandlerV2(w http.ResponseWriter, _ *http.Request)
- func MetricsHandler(w http.ResponseWriter, _ *http.Request)
- func MetricsHandlerV2(w http.ResponseWriter, _ *http.Request)
- func NewTLSConfig(cfg *TLSConfig) (*tls.Config, error)
- func PprofHandler(w http.ResponseWriter, _ *http.Request)
- func RecordError()
- func RecordRequest()
- func SetLogger(l *slog.Logger)
- func TLSListener(l net.Listener, tlsCfg *tls.Config) net.Listener
- func WaitForSignal(cancel context.CancelFunc)
- func WithLogger(ctx context.Context, l *slog.Logger) context.Context
- type MetricsCollector
- func (m *MetricsCollector) RecordContainerCreated()
- func (m *MetricsCollector) RecordContainerKilled()
- func (m *MetricsCollector) RecordContainerStarted()
- func (m *MetricsCollector) RecordContainerStopped()
- func (m *MetricsCollector) RecordError()
- func (m *MetricsCollector) RecordExec()
- func (m *MetricsCollector) RecordImageBuilt()
- func (m *MetricsCollector) RecordImagePulled()
- func (m *MetricsCollector) RecordNetworkCreated()
- func (m *MetricsCollector) RecordRequest(duration time.Duration)
- func (m *MetricsCollector) RecordVolumeCreated()
- func (m *MetricsCollector) SetContainersPaused(n int64)
- func (m *MetricsCollector) SetContainersRunning(n int64)
- func (m *MetricsCollector) SetImagesCount(n int64)
- func (m *MetricsCollector) Snapshot() MetricsSnapshot
- type MetricsSnapshot
- type Middleware
- type RateLimit
- type Server
- func (s *Server) Listen() error
- func (s *Server) RegisterHandler(path string, handler http.Handler)
- func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (s *Server) SetMiddleware(middlewares ...func(http.Handler) http.Handler)
- func (s *Server) Shutdown(ctx context.Context) error
- func (s *Server) SocketPath() string
- type TLSConfig
- type VolumeManager
- func (vm *VolumeManager) Create(name string, driver string, opts map[string]string, labels map[string]string) (*common.VolumeInfo, error)
- func (vm *VolumeManager) Get(name string) (*common.VolumeInfo, error)
- func (vm *VolumeManager) List() []*common.VolumeInfo
- func (vm *VolumeManager) Prune(referencedVolumes map[string]bool) ([]string, error)
- func (vm *VolumeManager) Remove(name string) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GenerateSelfSignedCert ¶
GenerateSelfSignedCert generates a self-signed certificate for testing. AE10: Generates self-signed certs when no cert is provided.
func GracefulShutdown ¶
GracefulShutdown handles OS signals for graceful shutdown.
func HealthHandler ¶
func HealthHandler(w http.ResponseWriter, _ *http.Request)
AG8: HealthHandler returns comprehensive daemon health status.
func HealthHandlerV2 ¶
func HealthHandlerV2(w http.ResponseWriter, _ *http.Request)
HealthHandlerV2 returns comprehensive health status.
func MetricsHandler ¶
func MetricsHandler(w http.ResponseWriter, _ *http.Request)
MetricsHandler serves Prometheus-compatible metrics.
func MetricsHandlerV2 ¶
func MetricsHandlerV2(w http.ResponseWriter, _ *http.Request)
MetricsHandler serves Prometheus-compatible metrics.
func NewTLSConfig ¶
NewTLSConfig creates a tls.Config from the given settings.
func PprofHandler ¶
func PprofHandler(w http.ResponseWriter, _ *http.Request)
PprofHandler returns a pprof index page for debugging.
func SetLogger ¶
SetLogger replaces the API package's logger. Subsequent log lines emitted by Middleware and handlers go through slog.
func TLSListener ¶
TLSListener wraps a regular listener with TLS.
func WaitForSignal ¶
func WaitForSignal(cancel context.CancelFunc)
WaitForSignal blocks until SIGINT, SIGTERM, or SIGHUP is received, then calls the cancel function. Used by main to bridge os/signal to a context cancel.
Types ¶
type MetricsCollector ¶
type MetricsCollector struct {
// contains filtered or unexported fields
}
MetricsCollector collects and exposes Prometheus-compatible metrics.
func NewMetricsCollector ¶
func NewMetricsCollector() *MetricsCollector
NewMetricsCollector creates a new metrics collector.
func (*MetricsCollector) RecordContainerCreated ¶
func (m *MetricsCollector) RecordContainerCreated()
RecordContainerCreated records a container creation.
func (*MetricsCollector) RecordContainerKilled ¶
func (m *MetricsCollector) RecordContainerKilled()
RecordContainerKilled records a container kill.
func (*MetricsCollector) RecordContainerStarted ¶
func (m *MetricsCollector) RecordContainerStarted()
RecordContainerStarted records a container start.
func (*MetricsCollector) RecordContainerStopped ¶
func (m *MetricsCollector) RecordContainerStopped()
RecordContainerStopped records a container stop.
func (*MetricsCollector) RecordError ¶
func (m *MetricsCollector) RecordError()
RecordError records an HTTP error.
func (*MetricsCollector) RecordExec ¶
func (m *MetricsCollector) RecordExec()
RecordExec records an exec call.
func (*MetricsCollector) RecordImageBuilt ¶
func (m *MetricsCollector) RecordImageBuilt()
RecordImageBuilt records an image build.
func (*MetricsCollector) RecordImagePulled ¶
func (m *MetricsCollector) RecordImagePulled()
RecordImagePulled records an image pull.
func (*MetricsCollector) RecordNetworkCreated ¶
func (m *MetricsCollector) RecordNetworkCreated()
RecordNetworkCreated records a network creation.
func (*MetricsCollector) RecordRequest ¶
func (m *MetricsCollector) RecordRequest(duration time.Duration)
RecordRequest records an HTTP request.
func (*MetricsCollector) RecordVolumeCreated ¶
func (m *MetricsCollector) RecordVolumeCreated()
RecordVolumeCreated records a volume creation.
func (*MetricsCollector) SetContainersPaused ¶
func (m *MetricsCollector) SetContainersPaused(n int64)
SetContainersPaused sets the number of paused containers.
func (*MetricsCollector) SetContainersRunning ¶
func (m *MetricsCollector) SetContainersRunning(n int64)
SetContainersRunning sets the number of running containers.
func (*MetricsCollector) SetImagesCount ¶
func (m *MetricsCollector) SetImagesCount(n int64)
SetImagesCount sets the number of images.
func (*MetricsCollector) Snapshot ¶
func (m *MetricsCollector) Snapshot() MetricsSnapshot
Snapshot returns a point-in-time snapshot of all metrics.
type MetricsSnapshot ¶
type MetricsSnapshot struct {
RequestsTotal uint64 `json:"requests_total"`
RequestsErrors uint64 `json:"requests_errors"`
ContainersCreated uint64 `json:"containers_created"`
ContainersStarted uint64 `json:"containers_started"`
ContainersStopped uint64 `json:"containers_stopped"`
ContainersKilled uint64 `json:"containers_killed"`
ContainersRunning int64 `json:"containers_running"`
ContainersPaused int64 `json:"containers_paused"`
ImagesPulled uint64 `json:"images_pulled"`
ImagesBuilt uint64 `json:"images_built"`
ImagesCount int64 `json:"images_count"`
NetworksCreated uint64 `json:"networks_created"`
VolumesCreated uint64 `json:"volumes_created"`
ExecCalls uint64 `json:"exec_calls"`
Goroutines int `json:"goroutines"`
UptimeSeconds float64 `json:"uptime_seconds"`
AllocBytes uint64 `json:"alloc_bytes"`
SysBytes uint64 `json:"sys_bytes"`
NumGC uint32 `json:"num_gc"`
AvgRequestMs float64 `json:"avg_request_ms"`
}
MetricsSnapshot is a point-in-time snapshot of metrics.
type Middleware ¶
type Middleware struct {
// contains filtered or unexported fields
}
Middleware provides HTTP middleware for the API server.
func (*Middleware) CORS ¶
func (m *Middleware) CORS(next http.Handler) http.Handler
CORS adds CORS headers.
func (*Middleware) Logging ¶
func (m *Middleware) Logging(next http.Handler) http.Handler
Logging logs each request.
type RateLimit ¶
type RateLimit struct {
// contains filtered or unexported fields
}
RateLimit implements simple token bucket rate limiting.
func NewRateLimit ¶
NewRateLimit creates a rate limiter.
func (*RateLimit) RateLimitMiddleware ¶
RateLimitMiddleware applies rate limiting.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server implements the Docker Engine v1.44 compatible HTTP API.
func NewServer ¶
func NewServer(config *common.DokiConfig, rt *dokiruntime.Runtime, img *image.Store, net *network.Manager) *Server
NewServer creates a new API server.
func (*Server) RegisterHandler ¶
RegisterHandler registers a custom handler for a path.
func (*Server) ServeHTTP ¶
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP dispatches the request to the configured middleware chain and router.
func (*Server) SetMiddleware ¶
SetMiddleware configures middleware wrappers for the server.
func (*Server) SocketPath ¶
SocketPath returns the API socket path.
type TLSConfig ¶
type TLSConfig struct {
Enabled bool
CertFile string
KeyFile string
CAFile string
Verify bool
MinTLS uint16
}
func DefaultTLSConfig ¶
func DefaultTLSConfig() *TLSConfig
DefaultTLSConfig returns a default TLS configuration.
type VolumeManager ¶
type VolumeManager struct {
// contains filtered or unexported fields
}
VolumeManager manages Docker-compatible volumes.
func NewVolumeManager ¶
func NewVolumeManager(root string) *VolumeManager
NewVolumeManager creates a new volume manager.
func (*VolumeManager) Create ¶
func (vm *VolumeManager) Create(name string, driver string, opts map[string]string, labels map[string]string) (*common.VolumeInfo, error)
func (*VolumeManager) Get ¶
func (vm *VolumeManager) Get(name string) (*common.VolumeInfo, error)
func (*VolumeManager) List ¶
func (vm *VolumeManager) List() []*common.VolumeInfo
func (*VolumeManager) Prune ¶
func (vm *VolumeManager) Prune(referencedVolumes map[string]bool) ([]string, error)
func (*VolumeManager) Remove ¶
func (vm *VolumeManager) Remove(name string) error