Panoramica
Skopeo è uno strumento per la gestione, l'ispezione, la firma e il trasferimento di immagini di container e repository di immagini su sistemi Linux, Windows e MacOS. Come Podman e Buildah, Skopeo è un progetto open source promosso dalla community che non richiede l'esecuzione di un container daemon.
Skopeo consente l'ispezione delle immagini in un registro remoto senza richiedere il download dell'intera immagine e dei relativi livelli; costituisce perciò una soluzione modulare per lavorare con immagini di container in diversi formati, incluse le immagini Open Container Initiative (OCI) e Docker.
Cosa sono le immagini dei container?
Un'immagine di container è un file con un codice predisposto per essere eseguito in un processo isolato. Le immagini dei container sono costituite da due parti.
Archivio tar
La prima parte è formata da uno o più archivi tar del file system del container. Un archivio tar è una raccolta di file e la directory del file system contiene tutto il codice e i file di configurazione necessari per eseguire un'applicazione.
File JSON
La seconda parte è costituita dai file JSON che descrivono l'applicazione, forniscono la configurazione data dallo sviluppatore per eseguire il container, trasmettono i dati tra l'applicazione e il server e archiviano i metadati sui singoli componenti dell'immagine e su come utilizzarli per riferimento.
Un repository di container è un gruppo di immagini dei container che forniscono diverse versioni di un'applicazione, e un registro di container è il server che permette di accedere alle immagini o caricarne di nuove.
Risorse da Red Hat
Come funziona Skopeo?
Skopeo, dal greco "osservo da lontano", è il primo strumento per container sviluppato dagli ingegneri di Red Hat in collaborazione con la community open source. Skopeo, insieme a Podman e Buildah, consente la gestione dei container OCI. In poche parole, Podman esegue i container, Buildah li realizza e Skopeo li trasporta. Insieme, Podman, Buildah e Skopeo sono un set di strumenti funzionali e versatili messi a tua disposizione per l'ambiente containerizzato.
Skopeo ispeziona le immagini con il comando skopeo inspect. Prima del suo rilascio, per ispezionare un'immagine era necessario estrarla per intero anche se occorreva ispezionare solo alcuni metadati. Il comando Skopeo inspect mostra le proprietà dell'immagine, inclusi i livelli, i tag e le etichette, evitando così di eseguire il pull dell'immagine nell'host. In questo modo è possibile ottenere le informazioni su un repository o un tag senza consumare risorse.
Skopeo consente anche di eliminare un'immagine da un repository e di sincronizzare il repository di un'immagine esterna con un registro interno, per i deployment di reti disconnesse (anche dette air gap) in cui la sicurezza è un requisito chiave. Quando richiesto dal repository, Skopeo può comunicare le credenziali e i certificati appropriati per l'autenticazione.
Il comando Skopeo sync consente di creare copie dirette da registro a registro per l'utilizzo online e da registro a file e da file a registro per la preparazione di ambienti disconnessi. A differenza del comando skopeo copy, che presuppone un'azione eseguita sulla copia richiesta, skopeo sync è progettato per una maggiore velocità nelle risincronizzazioni regolari di grandi repository con poche modifiche. Oltre che direttamente da riga di comando, l'operazione di sincronizzazione può essere configurata in un file config, che consente solo la sincronizzazione di un sottoinsieme di tag da un repository di grandi dimensioni.
Se l'ispezione segnala la necessità di copiare un'immagine container da un tipo di posizione o storage a un altro, è possibile utilizzare il comando Skopeo copy. Lo strumento consente di copiare le immagini dei container tra registri come docker.io, quay.io e il registro dei container interno o i diversi meccanismi di storage del sistema locale. La copia diretta da registro a registro è veloce e mantiene immutata la forma e il digest del manifest dell'immagine se il registro di destinazione lo consente. Per copiare le immagini tra i registri non è necessario utilizzare dischi locali né occorre spazio disponibile sul disco locale. Skopeo transita facilmente anche tra storage di motori di container e persino tra directory. Viene utilizzato frequentemente nei sistemi CI/CD per tenere aggiornati i registri dei container e gestire lo storage nei server di container.
I vantaggi di Skopeo
Strumenti flessibili per container
Skopeo fa parte di una suite modulare di strumenti per container che offre molti altri vantaggi. Introdurre modifiche significative in uno strumento monolitico senza che questo comporti interruzioni o disservizi per gli utenti che già lo utilizzano non è semplice. L'evoluzione di strumenti più specializzati e leggeri come Skopeo, Podman e Buildah è molto più rapida. Disporre di diversi strumenti permette a ognuno di essi di realizzare uno scopo specifico, e rende possibile aggiungerne di nuovi per aumentare le funzionalità o per ottenere nuovi risultati testando i tool esistenti con architetture e progetti potenzialmente incompatibili. Strumenti di dimensioni inferiori e più modulari sono anche più semplici da proteggere.
Così come parti delle funzionalità di Podman provengono dalla libreria libpod, che consente di condividere il codice con altri strumenti, anche la funzionalità di Skopeo è implementata in una libreria. La libreria di immagini/container di Skopeo è condivisa con altri strumenti per container tra cui Podman, Buildah e CRI-O ed è compatibile con l'interfaccia a riga di comando di Docker.
Sicurezza e accessibilità
I vantaggi principali che derivano dall'utilizzo congiunto di Podman, Skopeo e Buildah includono:
- Gestione di container rootless. Gli utenti possono creare, eseguire e gestire i container senza richiedere processi con privilegi di amministratore, il che si traduce in ambienti per container più accessibili senza compromessi per la sicurezza.
- Architettura daemonless. I daemon richiedono l'accesso amministrativo (bypassando anche la richiesta di verifica degli amministratori) per la lettura dei file, l'installazione dei programmi, la modifica delle applicazioni e altro. Per questo i daemon sono i destinatari ideali di attacchi perpetrati da criminali informatici che puntano a introdursi nel sistema host prendendo il controllo dei container.
- Integrazione nativa con systemd. L'utilizzo di Podman e degli strumenti per container associati consente di creare file unit systemd e di eseguire i container come servizi di sistema.
Kubernetes
Kubernetes è una piattaforma di orchestrazione dei container open source basata su container che consente di automatizzare molti dei processi manuali necessari per il deployment, la gestione e la scalabilità delle applicazioni containerizzate. Se esegui un sistema CI/CD in Kubernetes o utilizzi Red Hat OpenShift® per creare le immagini dei container, può essere necessario distribuire tali immagini su registri di container diversi. Skopeo è lo strumento essenziale per queste attività.
High Performance Computing (HPC)
Gli utenti che eseguono una versione precedente del sistema operativo nel sistema host potrebbero voler utilizzare Skopeo o altri strumenti per sfruttare le funzionalità e gli aggiornamenti più recenti. Una limitazione comune negli ambienti di HPC è che agli utenti rootless non è consentito installare pacchetti nell'host. Con la maggiore diffusione di Podman negli ambienti HPC, bastano pochi comandi per eseguire il container Skopeo con Podman per attività specifiche, senza che sia necessario l'accesso root.
Perché scegliere Red Hat?
Red Hat Enterprise Linux semplifica lo sviluppo dei container riducendo il numero di repository e fornendo più strumenti agli sviluppatori. Una sottoscrizione a Red Hat Enterprise Linux, oltre a includere già strumenti per container come Podman, Buildah e Skopeo, offre la stabilità necessaria a supportare le esigenze dei container e delle relative immagini. Eseguire l'upgrade di Red Hat Enterprise Linux può permetterti di sfruttare al massimo questi strumenti. Oltre a questi strumenti, Red Hat fornisce immagini di base sulle quali realizzare le tue immagini personali.
Esegui, realizza e condividi immagini di container utilizzando gli strumenti della riga di comando di Red Hat Enterprise Linux, le Red Hat Universal Base Image (UBI), il repository in Red Hat Quay e il repository Supplemental, tutti componenti che riducono le complessità di sviluppo dei container.
Il blog ufficiale di Red Hat
Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.