top of page
Team I.A. Italia

Cosa è Docker e come funziona, la guida completa fino all'istallazione


Non è difficile creare un modello di machine learning che funzioni sui nostri computer. È più difficile quando si lavora con un cliente che desidera utilizzare il modello su larga scala, ovvero un modello in grado di scalare ed eseguire su tutti i tipi di server in tutto il mondo. Dopo aver finito di progettare il tuo modello, potrebbe funzionare senza problemi sul tuo laptop o server, ma non così bene su altre piattaforme, come quando lo sposti nella fase di produzione o su un altro server. Molte cose possono andare storte, come problemi di prestazioni, arresto anomalo dell'applicazione o l'applicazione non ottimizzata in modo efficace.


È stato sviluppato un modello di apprendimento automatico utilizzando un unico linguaggio di programmazione come Python , ma quasi sicuramente dovrà connettersi con più linguaggi di programmazione per l'acquisizione dei dati, la preparazione dei dati, il front-end, ecc. Docker semplifica la gestione di tutte queste interazioni perché ogni microservizio può essere costruito in un linguaggio distinto, consentendo la scalabilità e l'aggiunta rapida, l'eliminazione di servizi indipendenti. Riproducibilità, portabilità, facilità di implementazione, aggiornamenti granulari, leggerezza e semplicità sono tutti vantaggi di Docker.

A volte non è il modello il problema, ma il requisito per ricreare l'intero stack. Docker ti consente di replicare facilmente l'ambiente di training e di esecuzione per il modello di machine learning da qualsiasi posizione. Docker ti consente di impacchettare il codice e le dipendenze in contenitori che possono essere trasferiti a host diversi, indipendentemente dall'hardware o dal sistema operativo.


Gli sviluppatori possono utilizzare Docker per tenere traccia delle diverse versioni di un'immagine del contenitore, vedere chi l'ha prodotta con cosa e tornare alle versioni precedenti. Infine, anche se uno dei servizi dell'applicazione di machine learning è in fase di aggiornamento, correzione o down, l'applicazione di machine learning può continuare a essere eseguita. Per aggiornare un messaggio di output integrato nell'applicazione, non è necessario aggiornare l'intera applicazione e interrompere altri servizi.


Una guida completa su Docker per principianti
Una guida completa su Docker

Cosa è Docker e quando è nato ?

È una piattaforma software che semplifica lo sviluppo, l'esecuzione, la gestione e la distribuzione di applicazioni. Ciò è stato possibile virtualizzando il sistema operativo del computer che aveva installato.

La prima edizione di Docker era stata lanciata nel 2013.

Il linguaggio di programmazione GO è stato utilizzato per creare Docker.

Considerando il ricco set di funzionalità che Docker ha da offrire, è stato ampiamente accettato da alcune delle principali organizzazioni e università del mondo, come Visa, PayPal, Cornell University e Indiana University (solo per citarne alcune) per gestire e gestire i propri applicazioni che utilizzano Docker.



Ora proviamo a capire il problema e la soluzione offerta da Docker


Problema

Immaginiamo di voler ospitare tre applicazioni separate basate su Python su un singolo server (che potrebbe essere una macchina fisica o virtuale). Una versione diversa di Python utilizzata da questi programmi, librerie e dipendenze varia da applicazione ad applicazione.

Non siamo in grado di ospitare tutte e tre le applicazioni sulla stessa workstation poiché diverse versioni di Python non possono essere installate sulla stessa macchina,


Soluzione offerta da Docker

Vediamo cosa potremmo fare se non usassimo Docker per affrontare questo problema. In questo caso, potremmo risolvere il problema con l'aiuto di tre macchine fisiche o utilizzando un singolo computer fisico abbastanza potente da ospitare ed eseguire tre macchine virtuali.

Entrambi gli approcci ci aiuterebbero a installare varie versioni di Python e le relative dipendenze su ciascuna di queste macchine.

Indipendentemente dalla soluzione che abbiamo scelto, i costi di acquisto e manutenzione dell'hardware sono notevoli. Diamo un'occhiata a come Docker potrebbe essere una soluzione praticabile ed economica a questo problema.


Per comprenderlo, dobbiamo prima esaminarne la funzionalità.

Una guida completa su Docker
Una guida completa su Docker

In termini semplici, il sistema con Docker installato e in esecuzione viene chiamato Docker Host o semplicemente Host.


Di conseguenza, ogni volta che si desidera distribuire un'applicazione sull'host, verrà creata un'entità logica per ospitare tale applicazione. Questo oggetto logico è noto come Container o Docker Container nella nomenclatura Docker.


Non è presente alcun sistema operativo installato o in esecuzione su un Docker Container. Tuttavia, verrebbe inclusa una replica virtuale della tabella del processo, delle interfacce di rete e del punto di montaggio del file system.

Viene passato ulteriormente dal sistema operativo host su cui è ospitato ed è in esecuzione il contenitore. Il kernel del sistema operativo dell'host, invece, è condiviso da tutti i container in esecuzione su di esso. Consente a ciascun container sullo stesso host di essere isolato dagli altri. Di conseguenza, consente l'esecuzione sullo stesso host di numerosi contenitori con vari requisiti applicativi e dipendenze, purché i requisiti del sistema operativo siano gli stessi. La parte successiva, che affronta i vantaggi e gli svantaggi dell'adozione di Docker, ti aiuterà a capire come Docker aiuta a risolvere questa sfida.


In altre parole, invece di virtualizzare i componenti hardware, Docker virtualizzerebbe il sistema operativo dell'host su cui era installato e in esecuzione.

Pro e contro dell'utilizzo di Docker


Pro dell'utilizzo di Docker

  • Docker consente a numerosi programmi con requisiti e dipendenze diversi di essere ospitati sullo stesso host purché utilizzino lo stesso sistema operativo.

  • I contenitori hanno in genere una dimensione di pochi megabyte e occupano relativamente poco spazio su disco, consentendo molte applicazioni ospitate sullo stesso host.

  • Robustezza, non vi è alcun sistema operativo installato su un container. Di conseguenza, utilizza una memoria estremamente ridotta rispetto a una macchina virtuale (che avrebbe un sistema operativo completo installato e in esecuzione su di essa). Riduce il tempo di avvio a pochi secondi, mentre sono necessari diversi minuti per avviare una macchina virtuale.

  • Il costo è inferiore quando si tratta dell'hardware necessario per eseguire Docker ed è meno impegnativo.


Contro dell'utilizzo di Docker

  • Sullo stesso Docker Host, non possiamo ospitare insieme applicazioni che hanno diverse esigenze del sistema operativo. Facciamo finta di avere quattro programmi separati, tre dei quali richiedono un sistema operativo basato su Linux e uno dei quali richiede un sistema operativo basato su Windows. Le tre app che richiedono un sistema operativo basato su Linux possono trovarsi su un singolo Docker Host. L'applicazione che richiede un sistema operativo basato su Windows deve trovarsi su un Docker Host separato.

Componenti principali Docker

Docker Engine è uno dei componenti principali ed è responsabile del funzionamento generale. È un'applicazione basata su client-server con tre componenti principali.

  • Server

  • Rest API

  • Client





Il server esegue il demone dockerd (Docker Daemon), che non è altro che un processo. Sulla piattaforma Docker, è responsabile della creazione e della gestione di immagini, contenitori, reti e volumi Docker.


L' API REST definisce come le applicazioni possono interfacciarsi con il server e indica come completare le proprie attività.


Il client è un'interfaccia a riga di comando che consente agli utenti di comunicare con Docker emettendo comandi.

Terminologie Docker

Diamo un'occhiata ad alcuni dei termini usati nel mondo Docker.

Le immagini Docker e i contenitori Docker sono i due elementi più importanti che incontrerai lavorando regolarmente con Docker. In parole povere, un'immagine Docker è un modello che include il programma, le dipendenze necessarie per eseguirlo su Docker.

Un Docker Container, invece, è un'entità logica, come indicato in precedenza. È un'istanza funzionante dell'immagine Docker in termini più tecnici.

Docker Hub


Docker Hub è il repository online ufficiale in cui possiamo trovare tutte le Docker Images che possiamo utilizzare. Se lo desideri, possiamo anche utilizzare Docker Hub per archiviare e distribuire le nostre immagini personalizzate. Potremmo anche renderli pubblici o privati, a seconda delle nostre esigenze. Nota: gli utenti gratuiti possono mantenere privata un'immagine Docker. Più di uno richiede un abbonamento a pagamento.

Installazione Docker

Prima di sporcarci le mani con Docker, un'ultima cosa che dobbiamo sapere è che dobbiamo averlo installato. Le istruzioni di installazione ufficiali di Docker sono qui sotto. Per installare Docker clicca il link relativo al tuo sistema operativo.


Vuoi saltare l'installazione e iniziare a esercitarti su Docker?

Se non ti va di installare Docker o non hai abbastanza risorse sul tuo PC, non farti prendere dal panico: c'è una soluzione al tuo problema.


Gioca con Docker, un parco giochi online per Docker, è il miglior punto di partenza.


Consente agli utenti di esercitarsi immediatamente con i comandi Docker senza la necessità di installare nulla sul proprio PC. La parte migliore è che è facile da usare e completamente gratuito.


Comandi Docker

È finalmente giunto il momento di sporcarci le mani con i comandi Docker, come tutti stavamo aspettando


creazione della finestra mobile

Il comando di creazione della finestra mobile sarà il primo comando che esamineremo

Possiamo usare questo comando per costruire un nuovo contenitore.

Quella che segue è la sintassi per questo comando:

docker create [options] IMAGE [commands] [arguments]

Tieni presente che tutto ciò che viene inserito tra parentesi quadre è facoltativo. Vale per tutte le istruzioni presentate in questa guida.


Di seguito sono riportati alcuni esempi di come utilizzare questo comando:

$ docker create fedora
02576e880a2ccbb4ce5c51032ea3b3bb8316e5b626861fc87d28627c810af03

Il comando docker create nell'esempio precedente creerebbe un nuovo contenitore usando l'immagine Fedora più recente.


Verificherà se l'ultima immagine ufficiale di Fedora è disponibile su Docker Host prima di costruire il container. Se l'immagine più recente non è accessibile sul Docker Host, il contenitore è stato avviato utilizzando l'immagine Fedora scaricata dal Docker Hub. Se l'immagine Fedora è già presente sul Docker Host, il contenitore usa quell'immagine per la creazione.


Docker restituisce l'ID del contenitore in caso di creazione riuscita del contenitore. L'ID contenitore restituito da Docker è nell'esempio precedente.


Un ID contenitore è stato assegnato a ciascun contenitore. Quando si eseguono varie attività sul contenitore, come l'avvio, l'arresto, il ripristino e così via, si fa riferimento ad esso con il relativo ID contenitore. Diamo un'occhiata a un altro esempio del comando docker create, questa volta con parametri e comando forniti.

$ docker create -t -i ubuntu bash
30986b73dc0022dbba81648d9e35e6e866b4356f026e75660460c3474f1ca005

Il comando docker create nell'esempio precedente crea un contenitore usando l'immagine Ubuntu (se l'immagine non è disponibile nell'host Docker, scaricherà l'immagine più recente dall'hub Docker prima di creare il contenitore).


Le opzioni -t e -i indicano a Docker di assegnare un terminale al container in modo che l'utente possa interagire con esso. Dice inoltre a Docker di eseguire il comando bash ogni volta che si avvia il contenitore.


docker ps

Il comando docker ps è il prossimo che esamineremo

Possiamo usare il comando docker ps per vedere tutti i container attualmente in esecuzione sull'host Docker.

$ docker ps
CONTAINER ID IMAGE  COMMAND CREATED        STATUS            PORTS NAMES30986b73dc00 ubuntu "bash"  45 minutes ago Up About a minute                 elated_franklin

Mostra solo i contenitori in esecuzione sull'host Docker in questo momento.

Per visualizzare i contenitori creati su questo host Docker, indipendentemente dalla loro condizione attuale, in esecuzione o meno, è necessario utilizzare l'opzione -a, che elenca tutti i contenitori creati su questo host Docker.

$ docker ps -a
CONTAINER ID IMAGE  COMMAND     CREATED           STATUS       PORTS NAMES30986b73dc00 ubuntu “bash”      About an hour ago Up 29 minutes elated_franklin02576e880a2c fedora “/bin/bash” About an hour ago Created hungry_sinoussi

Cerchiamo di capire l'output sopra del comando docker ps.


CONTAINER ID: è costituito da una stringa univoca con caratteri alfanumerici collegata a ciascun contenitore.

IMMAGINE: Docker Immagine utilizzata per creare il contenitore.

COMANDO: dopo l'avvio del contenitore, esegue tutti i comandi specifici dell'applicazione.

CREATO: Fornisce il tempo trascorso dalla creazione del contenitore.

STATUS: fornisce lo stato corrente del container.

Se il container è in esecuzione, visualizzerà Up insieme al tempo trascorso. (fino a circa un'ora o fino a 5 minuti) Se il container non è in esecuzione, lo stato sarà Exited, con il codice dello stato di uscita racchiuso tra parentesi tonde e il tempo scaduto. (Uscita (0) 2 settimane fa o Uscita (137) 10 secondi fa)

PORTS: fornisce le mappature delle porte descritte per il container.

NOMI: oltre all'ID CONTAINER, ogni container aveva un nome univoco. Un container può essere identificato dal suo ID container o dal suo nome univoco. Ogni contenitore Docker genera e assegna un nome univoco per impostazione predefinita. Se desideri modificare il contenitore con un nome univoco, usa l'opzione –name con i comandi di creazione mobile o esecuzione mobile.


Spero che questo ti aiuti a capire meglio cosa restituisce il comando docker ps.


inizio della finestra mobile

Il comando aiuta ad avviare eventuali contenitori fermi.

docker start [options] CONTAINER ID/NAME [CONTAINER ID/NAME…]

Per avviare il contenitore, puoi specificare i primi caratteri univoci dell'ID contenitore o il suo nome.


Di seguito puoi guardare l'esempio.

$ docker start 30986
$ docker start elated_franklin

riavvio della finestra mobile

Il comando aiuta a riavviare tutti i contenitori in esecuzione.

docker restart [options] CONTAINER ID/NAME [CONTAINER ID/NAME…]

Allo stesso modo, possiamo riavviare specificando i primi caratteri univoci dell'ID contenitore o il suo nome.

Guarda gli esempi usando questo comando

$ docker restart 30986
$ docker restart elated_franklin

Stop della finestra

Il comando aiuta a fermare tutti i contenitori in esecuzione.

docker stop [options] CONTAINER ID/NAME [CONTAINER ID/NAME…]

È correlato al comando di avvio. È possibile specificare i primi caratteri univoci dell'ID contenitore o il relativo nome per interrompere il contenitore.


Dai un'occhiata agli esempi qui sotto

$ docker stop 30986
$ docker stop elated_franklin

avvia una finestra mobile

Prima crea il contenitore e poi lo avvia. In sintesi, è una combinazione dei comandi di creazione e avvio della finestra mobile.

Ha una sintassi simile alla creazione della finestra mobile.

docker run [options] IMAGE [commands] [arguments]
$ docker esegui ubuntu
30fa018c72682d78cf168626b5e6138bb3b3ae23015c5ec4bbcc2a088e67520

Nell'esempio sopra, crea un contenitore usando l'ultima immagine di Ubuntu, avvia il contenitore e lo interrompe immediatamente. Non possiamo avere la possibilità di interagire con esso.


Per interagire con il contenitore, dobbiamo specificare le opzioni -it nel comando docker run, quindi possiamo interagire con il contenitore.

$ docker run -it ubuntu
root@e4e633428474:/#

Digita exit nel terminale per uscire dal container.


Docker rm

Usiamo questo comando per eliminare un contenitore.

docker rm [options] CONTAINER ID/NAME [CONTAINER ID/NAME...]
$ docker rm 30fa elated_franklin

Nell'esempio sopra, stiamo indicando alla finestra mobile di eliminare due contenitori in un unico comando. Specifichiamo l'ID per il primo e il nome per il secondo contenitore per l'eliminazione.

Il contenitore deve essere in uno stato di arresto per eliminarlo.


immagini della finestra mobile

Il comando elenca tutte le immagini della finestra mobile presenti sull'host della finestra mobile.

$ docker images
REPOSITORY  TAG      IMAGE          CREATED        SIZEmysql       latest   7bb2586065cd   38 hours ago   477MBhttpd       latest   5eace252f2f2   38 hours ago   132MBubuntu      16.04    9361ce633ff1   2 weeks ago    118MBubuntu      trusty   390582d83ead   2 weeks ago    188MBfedora      latest   d09302f77cfc   2 weeks ago    275MBubuntu      latest   94e814e2efa8   2 weeks ago    88.9MB

REPOSITORY: Descrive il nome univoco dell'immagine della finestra mobile.

TAG: Ad ogni immagine è associato un tag univoco che rappresenta una versione dell'immagine.

Un tag era rappresentato utilizzando una parola o un insieme di numeri o caratteri alfanumerici.

IMMAGINE: È una stringa di caratteri alfanumerici associata a ciascuna immagine.

CREATO: Fornisce il tempo trascorso da quando l'immagine è stata creata.

DIMENSIONE: Fornisce la dimensione dell'immagine.

Docker rmi

Questo comando ci consente di rimuovere le immagini dall'host della finestra mobile.

docker rmi [options] IMAGE NAME/ID [IMAGE NAME/ID...]
docker rmi mysql

Il comando rimuove l'immagine mysql dall'host della finestra mobile.

Il comando seguente rimuove le immagini httpd e fedora dall'host Docker.

docker rmi httpd fedora

Il comando seguente rimuove l'immagine con ID 94e81 dall'host Docker.

docker rmi 94e81

Il comando seguente rimuove l'immagine ubuntu con tag trusty.

docker rmi ubuntu:trusty

Questi sono alcuni dei comandi di base che incontri. Ci sono numerose altre istruzioni da esplorare.


Conclusioni


Sebbene la containerizzazione sia in circolazione da molto tempo, solo di recente ha ricevuto l'attenzione che merita. Google, Amazon Web Services (AWS), Intel, Tesla sono solo alcune delle principali aziende tecnologiche con i loro motori di container specializzati. Si affidano in modo significativo a loro per sviluppare, eseguire, amministrare e distribuire il loro software.

Docker è un motore di containerizzazione estremamente potente e ha molto da offrire quando si tratta di creare, eseguire, gestire e distribuire le applicazioni in modo efficiente.

Avevi visto Docker ad alto livello. C'è molto da studiare su Docker, tipo

  • Comandi (comandi più potenti)

  • Le immagini Docker sono un tipo di contenitore (crea le tue immagini personalizzate)

  • Rete con Docker (configurazione della rete)

  • Stack di Docker (servizi di raggruppamento richiesti da un'applicazione)

  • Docker Compose è uno strumento che consente di creare un container (strumento per la gestione e l'esecuzione di più container)

  • Sciame di Dockers (raggruppamento e gestione di una o più macchine su cui è in esecuzione Docker)

L'utilizzo di docker È un'abilità a prova di futuro che solo ora sta guadagnando terreno.

Investire tempo e denaro nello studio di Docker non è qualcosa di cui ti pentirai.



Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie

bottom of page