Help us shape the future of Go! Take the 2026 Go Developer Survey

dockerread

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

Package dockerread interroge le démon Docker par la CLI docker de l'apprenant, en lecture seule et par une liste fermée de sous-commandes (ps, inspect, logs, events) : c'est le seul paquet du plugin qui exécute docker (feature 004, FR-010).

Index

Constants

View Source
const (
	MaxStopped = 20 // conteneurs arrêtés ou en boucle de redémarrage
	MaxCreated = 10 // conteneurs créés sans avoir démarré (démarrage échoué possible)
)

Bornes de « docker ps » : le démon met ~12 ms par conteneur renvoyé (mesuré avec 215 conteneurs : 3 s sans borne), d'où une liste limitée aux plus récents (SC-004).

View Source
const DefaultTimeout = 10 * time.Second

DefaultTimeout est le délai maximal d'une lecture : de quoi absorber un démon chargé, sans jamais laisser la commande bloquée (5 s étaient dépassés juste après la création de 200 conteneurs, T031).

Variables

View Source
var (
	// ErrNotAllowed signale une sous-commande hors de la liste fermée : rien n'est exécuté.
	ErrNotAllowed = errors.New("lecture du démon non autorisée")
	// ErrTimeout signale une lecture interrompue après le délai maximal.
	ErrTimeout = errors.New("le démon Docker ne répond pas dans le délai")
)

Functions

This section is empty.

Types

type CLIError

type CLIError struct {
	Code   int
	Stderr string
}

CLIError est un échec de la CLI docker (démon injoignable, permission refusée…), avec sa sortie d'erreur nettoyée et masquée.

func (*CLIError) Error

func (e *CLIError) Error() string

type Candidate

type Candidate struct {
	ID, Name, Image, State, Status, CreatedAt string
	Code                                      int
	HasCode                                   bool
}

Candidate est une ligne de « docker ps » : un conteneur arrêté, en boucle de redémarrage ou créé sans avoir démarré. Le code n'est connu sans inspection que pour les deux premiers.

type Container

type Container struct {
	ID, Name, Image, Command string
	ExitCode                 int
	Created                  time.Time
	StartedAt, FinishedAt    time.Time
	OOMKilled                bool
	Error                    string
	Status                   string
	Restarting               bool
	RestartCount             int
	RestartPolicy            string
	MemoryLimit              int64
	LogDriver                string
	EnvNames                 EnvNames
	ComposeProject           string
	ComposeService           string
}

Container est l'état d'un conteneur, décodé de « docker inspect » (data-model.md). Les chaînes sont nettoyées et masquées ; les variables d'environnement réduites à leurs noms.

func DecodeInspect

func DecodeInspect(data []byte) ([]Container, error)

DecodeInspect décode une sortie JSON de « docker inspect » (variables réduites aux noms).

type EnvNames

type EnvNames []string

EnvNames sont les noms des variables d'environnement d'un conteneur. Le décodage ne garde que la partie avant « = » : aucune valeur n'est conservée (FR-009).

func (*EnvNames) UnmarshalJSON

func (e *EnvNames) UnmarshalJSON(data []byte) error

UnmarshalJSON décode ["NOM=valeur", …] en ne gardant que les noms.

type Event

type Event struct {
	Action, ID, Name, Image string
	ExitCode                int // -1 sans code (événement autre que « die »)
	TimeNano                int64
}

Event est un événement de conteneur (« docker events »).

func DecodeEvent

func DecodeEvent(line []byte) (Event, error)

DecodeEvent décode une ligne JSON de « docker events ».

type LogExcerpt

type LogExcerpt struct {
	Lines       []string
	Unavailable bool   // le pilote de journalisation ne permet pas la lecture
	Reason      string // message de la CLI (masqué) quand le journal est illisible
}

LogExcerpt est la fin du journal d'un conteneur, nettoyée et masquée ligne à ligne.

type Runner

type Runner struct {
	Bin     string // « docker » par défaut, cherché dans le PATH
	Global  []string
	Timeout time.Duration
}

Runner exécute les lectures avec la CLI docker de l'apprenant : même contexte, même hôte, mêmes certificats (Global : options globales reçues avant « telemach »).

func (Runner) Events

func (r Runner) Events(since, until string) ([]Event, error)

Events lit les événements de création et d'arrêt de conteneurs entre since et until (secondes depuis l'époque, décimales permises) ; « --until » rend la main aussitôt.

func (Runner) Inspect

func (r Runner) Inspect(ids ...string) ([]Container, error)

Inspect décode l'état des conteneurs désignés (identifiants, préfixes ou noms).

func (Runner) ListCandidates

func (r Runner) ListCandidates() ([]Candidate, error)

ListCandidates liste les conteneurs arrêtés ou en boucle de redémarrage, puis ceux créés sans avoir démarré, chacun du plus récemment créé au plus ancien, sans doublon.

func (Runner) ListStopped

func (r Runner) ListStopped() ([]Candidate, error)

ListStopped liste seulement les conteneurs arrêtés ou en boucle de redémarrage, les plus récents d'abord (utilisé aussi par la complétion de « docker telemach ps <Tab> »).

func (Runner) Logs

func (r Runner) Logs(id string, n int) (LogExcerpt, error)

Logs lit les n dernières lignes du journal (sorties standard et d'erreur du conteneur). Un journal illisible (pilote de journalisation) n'est pas une erreur : Unavailable.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL