Un'immagine container include i file e i componenti che compongono un'applicazione. A differenza delle macchine virtuali (VM), i container sono pacchetti software leggeri che vengono eseguiti sul sistema operativo Linux®. Le immagini container possono essere moltiplicate per adattarsi alle variazioni dei carichi di lavoro. Sono in genere associate allo sviluppo agile, alla metodologia DevOps e all'integrazione e alla distribuzione continue (CI/CD).
Le immagini container includono librerie di sistema, strumenti di sistema e altre impostazioni della piattaforma necessarie per l'esecuzione delle applicazioni, e offrono agli sviluppatori i vantaggi della portabilità e dell'agilità indispensabili per creare nuove applicazioni o espanderle rapidamente.
Uno strumento open source come Buildah consente di creare immagini compatibili con OCI e Docker, con o senza Dockerfiles o un punto di partenza di un'immagine container esistente, semplificando notevolmente il processo.
Quando si sviluppano immagini container, è necessaria una posizione in cui salvarli, condividerli e accedervi durante la loro creazione. Il registro dei container svolge questi compiti,
agendo, sostanzialmente, come posizione in cui gli sviluppatori possono archiviare e condividere le immagini container tramite processi di uploading (pushing) nel registro e downloading (pulling) in un altro sistema, come un cluster di Kubernetes.
Una volta estratta l'immagine, l'applicazione al suo interno può essere eseguita su quel sistema.
Oltre alle immagini container, i registri conservano anche i percorsi e i parametri per il controllo degli accessi alle interfacce di programmazione delle applicazioni (API) per la comunicazione da container a container. Le API aiutano a eliminare gli accoppiamenti non previsti, che limitano il cambiamento e costituiscono una fonte comune di interruzioni, soprattutto negli ambienti di cloud ibrido in cui le applicazioni non risiedono più nello stesso datacenter.
Le immagini container possono comunicare anche tramite una service mesh, un livello di infrastruttura tra i servizi containerizzati che migliora la scalabilità. Per le applicazioni cloud native integrate in un'architettura di microservizi, una service mesh consente di includere un numero elevato di servizi "piccoli" in un'applicazione funzionale.