linux docker

Definizione: Docker

Docker è diventato lo standard de facto quando si tratta di implementazioni basate su container. Dall’implementazione su piccola scala alle applicazioni aziendali su larga scala, Docker funge da base per l’orchestrazione basata su container.

Docker ha guadagnato in breve tempo una tale popolarità e adozione nella comunità DevOps grazie al modo in cui è stato sviluppato per la portabilità e progettato per la moderna architettura dei microservizi.

L’evoluzione dei contenitori

Se pensi che la containerizzazione sia una nuova tecnologia, non lo è. Google utilizza la propria tecnologia di containerizzazione nelle sue infrastrutture da anni.

Il concetto di contenitore è nato negli anni 2000. In effetti, le radici risalgono al 1979, quando avevamo chroot, un concetto di modifica della directory root di un processo.

Ecco un elenco di progetti basati su container iniziati nel 2000.

Cos’è un contenitore Linux (LXC)?

Prima di immergerti direttamente nei concetti di Docker, devi prima capire cos’è un contenitore Linux.

In un tipico ambiente virtualizzato, una o più macchine virtuali vengono eseguite su un server fisico utilizzando un hypervisor come Xen, Hyper-V, ecc.

I contenitori, invece, vengono eseguiti sul kernel del sistema operativo. Possiamo chiamare questa virtualizzazione a livello di sistema operativo. Prima di entrare nei concetti alla base dei contenitori, è necessario comprendere due concetti chiave di Linux.

  • Area utente : Tutto il codice necessario per l’esecuzione dei programmi utente (applicazioni, processi) è chiamato “spazio utente”. Quando si avvia un’azione del programma, ad esempio, per creare un file, il processo nello spazio utente effettua una chiamata di sistema allo spazio kernel.
  • Spazio nel kernel : Questo è il cuore del sistema operativo, dove si trova il codice del kernel

Un contenitore è un processo

Quando avvii un’applicazione, ad esempio un server web Nginx, stai effettivamente avviando un processo. Un processo stesso è un’istruzione autonoma con isolamento limitato.

E se potessimo isolare il processo con solo i file e la configurazione necessari per l’esecuzione e il funzionamento? Questo è ciò che fa un contenitore.

Un contenitore è in realtà un processo con sufficiente isolamento componenti dello spazio utente in modo che sembri un sistema operativo separato.

Il processo contenitore padre può avere un processo figlio. Quindi possiamo dire che un contenitore è anche un gruppo di processi.

Ad esempio, quando avvii un servizio Nginx, viene avviato un processo Nginx principale. Il processo genitore copre quindi i suoi processi figli come il gestore della cache, il caricatore della cache e i lavoratori.

Pertanto, quando avvii un contenitore Nginx, avvii un processo Nginx principale nel suo ambiente isolato. Te lo mostrerò praticamente nelle sezioni seguenti.

Ogni contenitore ha il suo spazio utente isolatoed è possibile eseguire più contenitori su un singolo host. Ciò significa che un contenitore possiede l’intero sistema operativo? NO. A differenza di una VM con il proprio kernel, un contenitore contiene solo i file necessari relativi a una distribuzione specifica e utilizza il kernel dell’host condiviso. Ancora più interessante, puoi eseguire diversi contenitori basati su distribuzioni Linux su un singolo host che condivide lo stesso spazio del kernel.

Ad esempio, puoi eseguire un contenitore basato su RHEL, CentOS e SUSE su un server Ubuntu. Ciò è possibile perché per tutte le distribuzioni Linux, solo lo spazio utente è diverso e lo spazio kernel è lo stesso.

Concetto alla base dei contenitori Linux

L’immagine seguente fornisce una rappresentazione visiva dei continui di Linux.

I contenitori sono isolati all’interno di un host utilizzando due funzionalità del kernel Linux chiamate namespace e cgroup.

Un’analogia nel mondo reale sarebbe un condominio. Pur trattandosi di un unico grande edificio, ogni appartamento è isolato per i singoli nuclei familiari aventi una propria identità con contatori di acqua, gas ed elettricità. Utilizziamo cemento, strutture in acciaio e altri materiali da costruzione per stabilire questo isolamento. Non hai visibilità nelle altre case a meno che non ti permettano di entrarvi.

Allo stesso modo, puoi collegarti a un singolo host contenente più contenitori. Per isolare i contenitori con la propria CPU, memoria, indirizzo IP, punti di montaggio e processi, sono necessarie due funzionalità del kernel Linux chiamate spazi dei nomi e cgroup.

A lire également  Definizione Microcomputer

Cos’è esattamente Docker?

Docker è un progetto open source popolare scritto in go e sviluppato da Dotcloud (A PaaS Company).

È essenzialmente un motore di contenitori che utilizza le funzionalità del kernel Linux come spazi dei nomi e cgroup per creare contenitori su un sistema operativo.

Cioè, tutti i concetti e le funzionalità dei contenitori che abbiamo appreso nella sezione LXC vengono eseguiti in modo molto semplice da Docker. Basta eseguire alcuni comandi e impostazioni Docker per rendere operativi i contenitori.

Forse ti starai chiedendo in cosa Docker è diverso da un contenitore Linux (LXC), poiché tutti i concetti e l’implementazione sono simili.

Docker è stato originariamente creato su contenitori Linux (LXC). Successivamente, Docker ha sostituito LXC con il proprio contenitore runtime (che ora fa parte di runc)

Oltre ad essere una tecnologia contenitore, Docker dispone di componenti di packaging ben definiti che semplificano le applicazioni di packaging. Prima di Docker non era semplice gestire i container. In altre parole, fa tutto il lavoro necessario per disaccoppiare la tua applicazione dall’infrastruttura impacchettando tutti i requisiti di sistema dell’applicazione in un contenitore.

Ad esempio, se disponi di un file jar Java, puoi eseguirlo su qualsiasi server su cui è installato Java. Nello stesso modo, Dopo aver creato il pacchetto di un contenitore con le applicazioni richieste utilizzando Docker, puoi eseguirlo su qualsiasi altro host su cui è installato Docker.

Differenza tra finestra mobile e contenitore

Docker è una tecnologia o uno strumento sviluppato per gestire in modo efficiente l’implementazione dei container.

Quindi, posso gestire un contenitore senza Docker? SÌ ! Certo. Puoi utilizzare la tecnologia LXC per eseguire contenitori su server Linux.

Tutto quello che devi sapere su docker

Docker è una piattaforma di containerizzazione ampiamente utilizzata. Dovresti sapere che contenitori e microservizi vengono spesso utilizzati dal punto di vista dello sviluppo e della distribuzione delle applicazioni. Questo è lo sviluppo “cloud-native”. Docker è quindi un’alternativa estremamente apprezzata nelle aziende. Se vuoi avere accesso a a guida completa alla finestra mobile, puoi visitare il sito web del nostro partner datascientest.com. Un contenitore è un ambiente di esecuzione leggero e un’alternativa alle tradizionali tecniche di virtualizzazione delle macchine virtuali.

Per sviluppare con successo software moderno, le applicazioni distribuite sullo stesso host devono essere isolate per evitare che interferiscano. I pacchetti sono necessari per eseguire le applicazioni. Le macchine virtuali vengono utilizzate per separare le applicazioni le une dalle altre su un sistema identico e per ridurre i conflitti tra i componenti software e la competizione per le risorse. Docker è una soluzione open source, sicura ed economica. Docker viene utilizzato anche per eseguire contenitori su Windows o Mac tramite un livello di virtualizzazione Linux. Quindi sai dove andare per ottenere maggiori informazioni su Docker e comprendere tutti i dettagli di questa piattaforma di containerizzazione.

Per sviluppare con successo software moderno, le applicazioni distribuite sullo stesso host devono essere isolate per evitare che interferiscano. I pacchetti sono necessari per eseguire le applicazioni. Le macchine virtuali vengono utilizzate per separare le applicazioni le une dalle altre su un sistema identico e per ridurre i conflitti tra i componenti software e la competizione per le risorse. Docker è una soluzione open source, sicura ed economica. Docker viene utilizzato anche per eseguire contenitori su Windows o Mac tramite un livello di virtualizzazione Linux. Quindi sai dove andare per ottenere maggiori informazioni su Docker e comprendere tutti i dettagli di questa piattaforma di containerizzazione.

Perché Docker ha così tanto successo?

Docker dispone di un flusso di lavoro efficiente per spostare l’applicazione dal laptop dello sviluppatore all’ambiente di test e quindi alla produzione. Imparerai di più guardando un esempio pratico di confezionamento di un’applicazione in un’immagine Docker.

Sapevi che l’avvio di un contenitore Docker richiede meno di un secondo?

È incredibilmente veloce e può essere eseguito su qualsiasi host con un kernel Linux compatibile. (È compatibile anche con Windows)

Nota : non è possibile eseguire un contenitore Windows su un host Linux perché non esiste il supporto del kernel Linux per Windows. Puoi leggere informazioni sui contenitori Windows da qui

Docker utilizza un file system di unione “Copia su scrittura” per archiviare le sue immagini. Ogni volta che vengono apportate modifiche a un contenitore, solo le modifiche verranno scritte su disco utilizzando il modello copia su scrittura.

Con il modello Copy-on-write, avrai livelli di archiviazione condivisi ottimizzati per tutti i tuoi contenitori.