Docker Hub è il registro più conosciuto per la distribuzione e la condivisione delle immagini dei contenitori. Docker Hub e altro Registri conformi a OCI ora può fare molto di più delle semplici immagini contenitore, però. Il Progetto ORAS (OCI Registry As Storage). trasforma i registri in negozi di artefatti generici, in grado di pubblicare qualsiasi risorsa rilevante per la tua applicazione.
In questo articolo imparerai cos’è ORAS, le sfide che risolve e come iniziare a usarlo con Docker Hub.
Hub Docker vs registri OCI Innanzitutto, chiariamo un dettaglio: l’ecosistema di container è più di un semplice Docker. Gli strumenti e i processi di cui Docker è stato pioniere sono stati standardizzato dall’OCI. Docker è ora un’implementazione delle specifiche OCI, insieme ad altri sistemi di contenitori compatibili come Podmann e Kubernetes.
Docker Hub è una piattaforma compatibile con il registro OCI per la distribuzione di immagini di container. Gli strumenti del contenitore OCI possono consumare contenuti da Docker Hub e altri registri tramite comandi come docker pull e docker push. Sebbene in precedenza funzionassero solo con le immagini del contenitore, ora puoi utilizzare lo stesso meccanismo per distribuire gli altri componenti della tua app.
Perché gli artefatti generici contano Questa funzionalità è stata sviluppata sotto il ORA bandiera. Rimodella i registri come “negozi di artefatti generici” con cui è possibile interagire utilizzando il familiare flusso di lavoro push/pull.
Un artefatto è tutto ciò di cui un utente potrebbe aver bisogno per eseguire correttamente il software. Questa potrebbe essere un’immagine contenitore o un altro tipo di risorsa che ha senso per il tuo progetto:
Grafici del timone Binari precompilati e pacchetti di installazione SBOM Configurazioni dei criteri di sicurezza consigliate, ad esempio Regole dell’OPA Rilascia firme, certificati e metadati Queste risorse vitali possono spesso essere difficili da trovare per gli utenti. Tendono a essere sparsi su diverse piattaforme di controllo del codice sorgente, gestori di pacchetti e download diretti di siti Web. Con ORAS, puoi depositare tutto in un registro centralizzato, quindi consentire agli utenti di recuperare i contenuti utilizzando un unico set di strumenti e credenziali. Visualizzare la SBOM per la versione v1.1.0 è semplice come oras pull example.com/my-app/sbom:v1.1.0Per esempio.
ORAS è un cambiamento radicale per le immagini container? ORAS non interrompe alcuna funzionalità del registro contenitori esistente. Puoi continuare a eseguire comandi come docker push my-image:latest per spostare le immagini in giro.
Tuttavia, dietro le quinte sono state apportate modifiche significative all’archiviazione dei contenuti. ORAS rimuove il presupposto storico che tutto il contenuto del registro sia un’immagine. Per supportare gli artefatti, i registri devono tenere traccia del tipo di ciascun caricamento completato. Vengono definiti diversi tipi di artefatti “tipi di media” all’interno di ORAS.
I progetti di comunità popolari possono registrare i propri tipi di media per identificare le classificazioni degli artefatti di uso comune, come Grafici del timone. Ciò consente ai fornitori di registri di visualizzare informazioni pertinenti sugli artefatti che hai archiviato.
Il tipo di supporto dell’immagine del contenitore viene utilizzato automaticamente quando esegui il push da strumenti esistenti come docker push. Un tipo “sconosciuto” predefinito viene applicato quando si carica direttamente dalla CLI ORAS, a meno che non si specifichi un tipo registrato.
Installazione della CLI di ORAS È necessaria la CLI ORAS per eseguire il push e il pull degli artefatti con tipi arbitrari. Puoi scaricare l’ultima versione dalla pagina delle versioni di GitHub del progetto. Attualmente sono supportati solo i sistemi macOS e Linux.
Estrai l’archivio scaricato, quindi copia il file oras binario a una posizione che è nel tuo percorso:
$ tar -zxf oras_0.16.0_*.tar.gz -C oras-install/ $ mv oras-install/oras /usr/local/bin/ $ rm -rf oras_0.16.0_*.tar.gz oras-install/ Controlla il funzionamento del tuo binario eseguendo il file oras version comando:
$ oras version 0.16.0 Ora sei pronto per iniziare a utilizzare ORAS.
ORAS è compatibile solo con i registri che hanno implementato il supporto per la specifica degli artefatti OCI. Questo elenco include ora la maggior parte dei principali fornitori, tra cui Amazon ECR, Azure, Google e GitHub, nonché istanze self-hosted distribuite utilizzando il Distribuzione CNCF.
Useremo Docker Hub per questo articolo in quanto è la soluzione di registro più popolare. Esso aggiunto il supporto completo per OCI Artifacts nel novembre 2022.
Accedi al tuo registro ORA riutilizza automaticamente credenziali di registro che hai precedentemente aggiunto al tuo ~/.docker/config.json file. Se devi accedere a Docker Hub, puoi eseguire entrambi docker login o oras login fare così:
$ oras login -u username -p password_or_personal_access_token $ docker login -u username -p password_or_personal_access_token Quindi crea un semplice file da caricare nel registro. Ricorda che non ci sono restrizioni sul tipo di risorsa che spingi. Questo esempio è un file JSON artificioso che descrive lo stato del progetto, ma puoi caricare qualsiasi cosa possa essere utile ai tuoi utenti o sviluppatori.
$ echo ‘{“app”: “oras-demo”, “version”: “1.1.0”}’ > artifact.json Ora sei pronto per inviare il tuo file con la CLI di ORAS.
Spingi il tuo manufatto Esegui il seguente comando per eseguire il push del tuo artefatto, dopo la sostituzione con il tuo vero nome utente Docker Hub:
$ oras push docker.io//oras-demo:1.1.0 artifact.json:application/json –artifact-type application/vnd.unknown.config.v1+json Uploading 7ac68d8d2a12 artifact.json Uploaded 7ac68d8d2a12 artifact.json Pushed docker.io/ilmiont/oras-demo:1.1.0 Digest: sha256:41abfed0ab43a24933c5eafe3c363418264a59eee527821a39fe7c0abf25570b Ci sono alcuni dettagli degni di nota in questo comando:
Il primo argomento definisce il registro a cui eseguire il push e il tag da assegnare all’artefatto. Questo è simile al push di un tag immagine del contenitore. non mi piace il docker CLI, ORAS richiede di specificare l’URL del registro (docker.io per Docker Hub). ORAS è uno strumento generico che non può fare ipotesi su cosa o dove stai spingendo. Il secondo argomento specifica il percorso del file in cui stai caricando filename:content-type formato. Poiché il file di esempio è JSON, il file application/json il tipo di contenuto è selezionato. Il terzo argomento specifica il tipo di artefatto ORAS (tipo di supporto) da assegnare all’artefatto. Dovresti usare uno standard tipo di supporto se stai caricando un tipo di artefatto registrato, come un grafico Helm, ma l’impostazione predefinita “sconosciuto” è appropriata per questa demo. L’avanzamento del caricamento viene mostrato nel tuo terminale, in modo simile a un normale docker push. Prova a eseguire il file oras repo tags comando per confermare il push completato:
$ oras repo tags docker.io//oras-demo 1.1.0 Gestione degli artefatti nell’interfaccia utente di Docker Hub Il tuo artefatto apparirà anche sul sito web di Docker Hub. Nell’elenco Repository, vedrai Contains: Other per indicare che il repository contiene un artefatto generico. I repository di immagini del contenitore sono etichettati come Contains: Image.
Seleziona il repository per visualizzarne i dettagli, aggiungere una descrizione e vedere tutti i tag disponibili. È simile a lavorare con le immagini del contenitore.
Tirare il tuo manufatto Con il tuo artefatto disponibile nel registro, ora puoi passare a un’altra macchina e ripetere i passaggi per installare la CLI ORAS e accedere al tuo account Docker Hub. Dopo esserti autenticato, usa il file oras pull comando per recuperare il tuo artefatto:
$ oras pull docker.io//oras-demo:1.1.0 Downloading 7ac68d8d2a12 artifact.json Downloaded 7ac68d8d2a12 artifact.json Pulled docker.io/ilmiont/oras-demo:1.1.0 Digest: sha256:41abfed0ab43a24933c5eafe3c363418264a59eee527821a39fe7c0abf25570b I file nell’artefatto verranno depositati nella tua directory di lavoro:
$ ls artifact.json $ cat artifact.json {“app”: “demo-oras”, “version”: “1.1.0”} Hai utilizzato con successo ORAS per distribuire gli artefatti della tua applicazione, utilizzando l’infrastruttura esistente disponibile dal provider del registro contenitori.
Riepilogo ORAS trasforma i registri delle immagini dei container in piattaforme di distribuzione generiche. Puoi eseguire il push di qualsiasi artefatto rilevante per la tua applicazione e gli utenti possono recuperarlo utilizzando un meccanismo coerente. Ciò evita di dover gestire, pubblicare e passare da più canali di distribuzione a più canali.
Il supporto ORAS viene aggiunto anche ai popolari strumenti dell’ecosistema. Helm ti consente di inviare direttamente i grafici a un registro ORAS usando il suo helm push comando, Per esempio. Ciò evita di dover esportare manualmente il grafico in modo da poterlo inviare oras push. Gestisce anche l’impostazione del tipo di supporto ORAS corretto per te. Puoi aspettarti più strumenti per iniziare a integrare ORAS, permettendoti di inviare tutti i tipi di contenuto direttamente al tuo registro centralizzato.