Class: DockerSwarm::Image
- Includes:
- Concerns::Deletable
- Defined in:
- lib/docker_swarm/models/image.rb
Overview
Represents a Docker Image
No incluye Creatable: el "create" del Docker API sobre imágenes es un PULL
(stream de progreso), no la construcción de un recurso CRUD. Se expone como
.pull con contrato propio.
Constant Summary collapse
- DIGEST_STATUS =
Docker emite el digest del pull en un frame de status "Digest: sha256:..." (verificado empíricamente contra Docker 29.5.3; el stream de pull NO trae campo
aux). /\bDigest:\s*(sha256:[0-9a-f]+)/
Class Method Summary collapse
-
.index_query_params ⇒ Array<Symbol>
GET /images/jsondeclara dos query params propios además defilters:allydigests(spec v1.41,ImageList). -
.pull(image_reference, registry_auth: nil) ⇒ Hash
Pull explícito de una imagen (POST /images/create).
Methods included from Concerns::Deletable
Methods inherited from Base
all, #as_json, #assign_attributes, #attributes, defined_attributes, find, #id, #initialize, #method_missing, #payload_for_docker, #persisted?, #reload, resource_name, #respond_to_missing?, root_key, routes, #serializable_hash, where
Methods included from Concerns::Inspectable
Constructor Details
This class inherits a constructor from DockerSwarm::Base
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class DockerSwarm::Base
Class Method Details
.index_query_params ⇒ Array<Symbol>
GET /images/json declara dos query params propios además de filters: all y
digests (spec v1.41, ImageList).
Mismo caso que Container: since y before son filtros de
este recurso (<image-name>[:<tag>], <image id> o <image@digest>), así que
el default de Base los mandaba a la URL, donde el Engine los ignora
y devuelve la lista sin filtrar sin error. Ver #35.
27 28 29 |
# File 'lib/docker_swarm/models/image.rb', line 27 def index_query_params %i[all digests].freeze end |
.pull(image_reference, registry_auth: nil) ⇒ Hash
Pull explícito de una imagen (POST /images/create).
Operación SÍNCRONA: consume el stream NDJSON de progreso hasta EOF, eleva
error tipado ante un frame error/errorDetail (que Docker manda CON HTTP 200),
y solo tras terminación limpia devuelve un resultado explícito construido desde
el stream — sin un find posterior que reintroduciría el problema referencia-vs-ID.
42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/docker_swarm/models/image.rb', line 42 def pull(image_reference, registry_auth: nil) headers, = RegistryAuth.resolve(registry_auth: registry_auth) body = Api.request( action: routes[:pull], query_params: { fromImage: image_reference }, headers: headers ) frames = parse_progress_stream(body) raise_on_stream_error!(frames) pull_result(image_reference, frames) end |