Rilascio di Skopeo 1.0

Rispondi
cmo
Reactions score: 0
mag 2020 22 06:05

Rilascio di Skopeo 1.0

Messaggio da cmo

Siamo entusiasti di annunciare che  Skopeo 1.0 è stato rilasciato.
Parlo spesso di tutti i nuovi strumenti per container che abbiamo sviluppato negli ultimi anni e spesso passiamo in rassegna Skopeo. Ma Skopeo è stato il primo e ha davvero delle fantastiche funzioni. 
Skopeo è uno strumento per spostare le immagini dei container tra diversi tipi di archiviazione dei container. Ti consente di copiare le immagini del contenitore tra i registri del contenitore come docker.io , quay.io e il registro del contenitore interno o diversi tipi di archiviazione sul sistema locale. È possibile copiare in un contenitore / repository di archiviazione locale , anche direttamente in un demone Docker.  Immagine
Una delle cose migliori di Skopeo è che non è necessario essere root per eseguirlo e non è necessario archiviare le immagini localmente se si sta semplicemente copiando da un registro container a un altro. Skopeo non richiede che un demone sia in esecuzione per eseguire le sue operazioni. Credo che sia una soluzione molto migliore che dover correre 
podman pull IMAGE; podman push IMAGE
.
Skopeo viene utilizzato in tutto il mondo per spostare le immagini dei container. Viene utilizzato nei sistemi CI / CD per mantenere aggiornati i registri dei contenitori, nonché per caricare l'archiviazione dei contenitori per tutti i diversi tipi di server dei contenitori.
Storia
Skopeo era originariamente un progetto collaterale che Antonio Murdaca di Red Hat ha iniziato a visualizzare il file JSON dell'immagine contenitore memorizzato in un registro contenitore. Le immagini del contenitore, siano esse immagini OCI (Open Container Initiative) o Docker, sono costituite da due parti. Una parte è un tarball della directory rootfs. Questa directory, che tende ad apparire come il file system di root sul sistema operativo linux, contiene tutto il codice e i file di configurazione richiesti per eseguire un'applicazione.  
La seconda parte è un file JSON che descrive l'applicazione, questo è l'input dello sviluppatore dell'immagine del contenitore, come si aspetta che venga eseguito il contenitore. Include entrypoint e cmd che descrivono il percorso dell'eseguibile per avviare il contenitore. Include anche contenuti come variabili di ambiente e directory di lavoro. Fondamentalmente, tutti quei campi extra che le persone vedono nelle definizioni Dockerfile. Questi campi non sono standardizzati come parte della specifica dell'immagine OCI . 
Questi tarball di immagini possono diventare molto grandi, ho visto immagini multi-gigabyte. Il problema era che se volevi visualizzare il file JSON di specifica dell'immagine, l'unico modo per farlo era fare un docker pull IMAGE; finestra mobile ispeziona IMMAGINE. Alcuni anni fa abbiamo aperto una richiesta pull con il progetto Docker upstream per fare un 'docker inspect --remote IMAGE, la richiesta è stata respinta, perché i manutentori non volevano complicare la CLI Docker. Ma ci è stato detto che i registri dei container erano solo server Web e che dovevamo creare il nostro strumento per estrarre il file JSON. Antonio ha creato questo strumento e lo ha chiamato Skopeo,  che è la parola greca per la visualizzazione remota.
Antonio ha pensato che se avesse tirato fuori la specifica dell'immagine, avrebbe potuto anche tirare l'immagine. Una volta estratta l'immagine, ha immaginato di poter spingere l'immagine e Skopeo si è sviluppato in uno strumento in grado di copiare le immagini del contenitore tra tutti i diversi tipi di archiviazione del contenitore.
Red Hat stava lavorando con CoreOS prima della fusione delle società e CoreOS voleva utilizzare Skopeo per copiare le immagini sui loro host da utilizzare con il loro motore contenitore 
rkt
. Ma gli sviluppatori CoreOS non volevano uscire su Skopeo, volevano chiamare una libreria Golang. Questo ci ha portato a dividere Skopeo in uno strumento da riga di comando e in una libreria separata github.com/containers/image . Questa libreria è ora condivisa da molti altri motori container tra cui Podman , Buildah , CRI-O .
USO
$ skopeo --help

Varie operazioni con immagini contenitore e registri immagini contenitore

Utilizzo:
  skopeo [comando]

Comandi disponibili:
  copia                                      Copia un IMAGE-NAME da una posizione a un'altra
  elimina                                    Elimina immagine IMAGE-NAME
  aiuto                                      Aiuto su qualsiasi comando
  ispeziona                                    Immagine IMAGE-NAME
  list-tags                                  Elenca i tag nel trasporto / repository specificato dal  login                                      REPOSITORY-NAME
Accedi a un  logout del                                    registro container
Logout di un  manifest-digest del                            registro container
Calcola un digest manifest di un file
  standalone-sign                            Crea una firma utilizzando i file locali
  standalone-verifica                          Verifica una firma utilizzando la  sincronizzazione dei                                      file locali
Sincronizza una o più immagini da una posizione a un'altra
Skopeo opera sui seguenti tipi di immagine e repository:

  • Registri dei contenitori: 

Un'immagine in un registro che implementa "Docker Registry HTTP API V2". docker: // finestra mobile-riferimento. Lo stato di autorizzazione è memorizzato in 
$XDG_RUNTIME_DIR/containers/auth.json
, che è impostato usando (skopeo login). 

  • Conservazione del contenitore 

Un'immagine situata in un contenitore locale / archivio di immagini di archiviazione. Ubicazione e negozio di immagini specificati in 
/etc/containers/storage.conf
.

  • File system locale  

Un percorso di directory locale esistente che memorizza manifest, layer tarball e firme come singoli file. Questo è un formato non standardizzato, utile principalmente per il debug o l'ispezione non invasiva del contenitore.

  • Archivio Docker

Un'immagine è memorizzata nella finestra mobile salva il file formattato. docker-reference viene utilizzato solo durante la creazione di tale file e non deve contenere un digest.

  • Docker Daemon 

Un riferimento finestra mobile immagine memorizzato nella memoria interna del demone finestra mobile. Docker-Reference deve contenere un tag o un digest. In alternativa, durante la lettura di immagini, il formato può anche essere docker-daemon: algo: digest (un ID immagine).

  • Directory locale con formattazione OCI 

Un tag immagine in una directory conforme a "Specifica layout immagine contenitore aperto" nel percorso.
Esempi
Ispezione di un repository
Esempi:
$ skopeo inspect --config docker: //quay.io/podman/stable | json_pp
{
  "architecture": "amd64",
  "config": {
  "Cmd": [
      "/ bin / bash"
  ],
  "Env": [
      "DISTTAG = f32container",
      "FGC = f32",
      "container = oci" ,
      "PATH = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin",
      "_CONTAINERS_USERNS_CONFIGURED ="
  ],
  "Labels": {
      "licenza": "MIT",
      "name": "fedora",
      "vendor": "Fedora Project",
      "version":

                  ...
  ],
  "os": "linux",
  "rootfs": {
  "diff_ids": [
      "sha256: a4c0fa2b217d3fd63d51e55a6fd59432e543d499c0df2b1acd48fbe424f2ddd1",
      "SHA256: 120e15c4fd15cb42f0fc028a5105f3923b928c3cb766afc6cbc2c14a78b49387",
      "sha256: f100a96598ff0e42eede39a8cd57ff85c3478f942074216572b01d1d614fc083",
      "sha256: dbb194061737e6970cc735cee0b2353d541f51fe12a69cffb3827cce4cdf5c25",
      "sha256: 8dc1236d8bfbd7be7b8bf04677f5dd20fa41bbe6bd98688408071b1d4ec3ecf7 "
  ],
  " type ":" layers "
  }
}
Copia di immagini
Skopeo può copiare immagini di container tra vari meccanismi di archiviazione:
$ skopeo copy docker: //registry.access.redhat.com/ubi8-init docker: //reg.company.com/ubi-init
Ottenere le firme della fonte dell'immagine
Copia del BLOB 58e1deb9693d done 
Copia del BLOB f544909c6b5a done 
Copia del BLOB 78afc5364ad2 done 
Copia config a858c9c7 fatto 
Scrittura manifest su destinazione immagine
Memorizzazione delle firme
a858c9c7ea130b17bad01c858a20f4392085bcc0f25aa5eeee4b16726bed5bab

$ skopeo copy docker: //registry.fedoraproject.org/fedora: latest container-storage: fedora
Ottenere le firme della fonte dell'immagine
Copia del BLOB 3088721d7dbf fatto 
Copia della configurazione d81c91deec fatto 
Scrittura del manifest sull'immagine destinazione
Memorizzazione delle firme
Eliminazione di immagini da un registro
Per esempio,
$ skopeo delete docker: // localhost: 5000 / imagename: latest
Conclusione
Skopeo è un ottimo strumento leggero per aiutare gli utenti e gli amministratori a mantenere la propria infrastruttura di immagini container. Sebbene non abbia ricevuto l'attenzione che probabilmente merita, Skopeo è uno strumento davvero eccezionale da avere nella propria cassetta degli attrezzi. 

Rispondi