Questo articolo è stato pubblicato come parte di Blogathon sulla scienza dei dati
Introduzione
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 altrettanto bene su altre piattaforme, ad esempio quando lo sposti nella fase di produzione o su un server diverso. Molte cose possono andare storte, come problemi di prestazioni, l'arresto anomalo dell'applicazione o l'applicazione non ottimizzata in modo efficace.
Si era sviluppato un modello di apprendimento automatico utilizzando un unico linguaggio di programmazione come Python ma sarà quasi certamente necessario 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 scalabilità e la rapida aggiunta, cancellazione 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 l'esigenza di ricreare l'intero stack. Docker ti consente di replicare facilmente l'ambiente di training ed esecuzione per il modello di machine learning da qualsiasi posizione. Docker ti consente di impacchettare il tuo codice e le dipendenze in contenitori che possono essere trasferiti su host diversi, indipendentemente dall'hardware o dal sistema operativo.
Gli sviluppatori possono utilizzare Docker per tenere traccia delle diverse versioni di un'immagine contenitore, vedere chi l'ha prodotta con cosa e tornare alle versioni precedenti. Infine, anche se uno dei servizi applicativi di machine learning è in fase di aggiornamento, correzione o inattività, 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.
Scaviamo e iniziamo a indagare su Docker.
Cos'è Docker!
È una piattaforma software che semplifica lo sviluppo, l'esecuzione, la gestione e la distribuzione di applicazioni. Ciò era stato ottenuto virtualizzando il sistema operativo del computer che aveva installato.
La prima edizione di Docker era stata lanciata nel 2013.
Il linguaggio di programmazione GO 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 alcuni) per eseguire e gestire le proprie applicazioni utilizzando Docker.
Ora cerchiamo di capire il problema e la soluzione offerta da Docker
Problema
Immaginiamo di voler ospitare tre applicazioni basate su Python separate 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 un'applicazione all'altra.
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
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 associate su ciascuna di queste macchine.
Indipendentemente dalla soluzione scelta, 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à.
2 Immagine
In termini semplici, il sistema con Docker installato e in esecuzione viene indicato come Docker Host o Host.
Di conseguenza, ogni volta che si desidera distribuire un'applicazione sull'host, verrà creata un'entità logica per ospitare quell'applicazione. Questo oggetto logico è noto come Container o Docker Container nella nomenclatura Docker.
Nessun sistema operativo è installato o in esecuzione su un contenitore Docker. Tuttavia, verrebbe inclusa una replica virtuale della tabella dei processi, delle interfacce di rete e del punto di montaggio del file system.
Viene passato più lontano dal sistema operativo host su cui il contenitore è ospitato ed è in esecuzione. Il kernel del sistema operativo dell'host, invece, è condiviso da tutti i contenitori in esecuzione su di esso.
Consente a ciascun contenitore sullo stesso host di essere isolato dagli altri. Di conseguenza, consente l'esecuzione sullo stesso host di numerosi contenitori con requisiti applicativi e dipendenze diversi, a condizione che 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
Vantaggi
- Docker consente di ospitare sullo stesso host numerosi programmi con requisiti e dipendenze diversi, purché utilizzino lo stesso sistema operativo.
- I contenitori hanno in genere una dimensione di pochi megabyte e occupano relativamente poco spazio su disco, consentendo a molte applicazioni ospitate sullo stesso host.
- Robustezza, non c'è nessun sistema operativo installato su un contenitore. 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 occorrono diversi minuti per avviare una macchina virtuale.
- Il costo è inferiore quando si tratta dell'hardware necessario per eseguire Docker ed è meno impegnativo.
Svantaggi
- Sullo stesso Docker Host, non possiamo ospitare insieme applicazioni che hanno diverse esigenze di sistema operativo. Supponiamo 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 host Docker. L'applicazione che richiede un sistema operativo basato su Windows deve trovarsi su un host Docker separato.
Componenti principali di Docker
Motore Docker è uno dei componenti principali ed è responsabile del funzionamento generale.
È un'applicazione basata su client-server con tre componenti principali.
- server
- API REST
- .
I 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.
I API REST definisce come le applicazioni possono interfacciarsi con il server e dirgli come completare le proprie attività.
I . è un'interfaccia della riga di comando che consente agli utenti di comunicare con Docker emettendo comandi.
Terminologie Docker
Diamo uno sguardo ad alcuni dei termini usati nel mondo Docker.
Immagini Docker ed Contenitori di 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 precedentemente indicato. È un'istanza funzionante dell'immagine Docker in termini più tecnici.
Hub Docker
Hub Docker è il repository online ufficiale dove possiamo trovare tutte le immagini Docker che possiamo utilizzare.
Se lo desideriamo, 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
Prima di sporcarci le mani con Docker, un'ultima cosa che dobbiamo sapere è che dobbiamo averlo installato.
Di seguito sono riportate le istruzioni di installazione ufficiali di Docker CE. Queste istruzioni per l'installazione di Docker sul tuo PC sono semplici.
Vuoi saltare l'installazione e iniziare a fare pratica con Docker?
Se sei troppo lento per installare Docker o non hai abbastanza risorse sul tuo PC, niente 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 esercitare immediatamente 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 arrivato il momento di sporcarci le mani con i comandi Docker, come tutti stavamo aspettando
docker crea
Il comando docker create sarà il primo comando che esamineremo
Possiamo usare questo comando per costruire un nuovo contenitore.
La seguente è la sintassi per questo comando:
docker create [options] IMAGE [commands] [arguments]
Tieni presente che tutto ciò che è 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 utilizzando l'immagine Fedora più recente.
Verificherà se l'ultima immagine ufficiale di Fedora è disponibile su Docker Host prima di creare il contenitore. Se l'immagine più recente non è accessibile sull'host Docker, il contenitore è stato avviato utilizzando l'immagine Fedora scaricata dall'hub Docker. Se l'immagine Fedora è già presente sull'host Docker, il contenitore utilizza quell'immagine per la creazione.
Docker restituisce l'ID del contenitore in caso di creazione riuscita del contenitore. L'ID del contenitore restituito da Docker è nell'esempio precedente.
Un ID contenitore era stato assegnato a ciascun contenitore. Quando si eseguono varie attività sul contenitore, come l'avvio, l'arresto, la ripresa e così via, si fa riferimento ad esso tramite il relativo ID contenitore.
Diamo un'occhiata a un altro esempio del comando docker create, questa volta con i parametri e il comando forniti.
$ docker create -t -i ubuntu bash
30986b73dc0022dbba81648d9e35e6e866b4356f026e75660460c3474f1ca005
Il comando docker create nell'esempio precedente crea un contenitore utilizzando 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 contenitore in modo che l'utente possa interagire con esso. Indica anche 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 docker ps comando per vedere tutti i contenitori attualmente in esecuzione su Docker Host.
$ 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 corrente, indipendentemente dal fatto che sia 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.
ID CONTENITORE: è costituito da una stringa univoca con caratteri alfanumerici collegata a ciascun contenitore.
IMMAGINE: Immagine Docker 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.
STATO: Fornisce lo stato corrente del contenitore.
Se il contenitore è in esecuzione, verrà visualizzato Up insieme al tempo trascorso. (Up Circa un'ora o Fino 5 minuti)
Se il contenitore 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)
PORTI: Fornisce i mapping delle porte descritti per il contenitore.
NOMI: Oltre all'ID CONTAINER, ogni container aveva un nome univoco. Un contenitore può essere identificato dal suo ID contenitore 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 docker create o docker run.
Spero che questo ti aiuti a capire meglio cosa restituisce il comando docker ps.
inizio finestra mobile
Il comando aiuta ad avviare eventuali contenitori fermati.
docker start [options] CONTAINER ID/NAME [CONTAINER ID/NAME…]
Per avviare il contenitore, è possibile 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 qualsiasi contenitore in esecuzione.
docker restart [options] CONTAINER ID/NAME [CONTAINER ID/NAME…]
Allo stesso modo, possiamo riavviare specificando i primi caratteri univoci dell'ID del contenitore o il suo nome.
Guarda gli esempi usando questo comando
$ docker restart 30986
$ docker restart elated_franklin
fermata del portone
Il comando aiuta a fermare qualsiasi contenitore 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 suo nome per arrestare il contenitore.
Dai un'occhiata agli esempi qui sotto
$ docker stop 30986
$ docker stop elated_franklin
run docker
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 a quella di docker create.
docker run [options] IMAGE [commands] [arguments]
$ docker esegui ubuntu
30fa018c72682d78cf168626b5e6138bb3b3ae23015c5ec4bbcc2a088e67520
Nell'esempio sopra, crea un contenitore utilizzando l'ultima immagine di Ubuntu e 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 al comando docker run, quindi possiamo interagire con il contenitore.
$ docker run -it ubuntu
[email protected]:/#
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 singolo comando. Specifichiamo l'ID per il primo e il nome per il secondo contenitore per la cancellazione.
Il contenitore deve essere in uno stato di arresto per eliminarlo.
immagini docker
Il comando elenca tutte le immagini docker presenti nell'host docker.
$ 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
DEPOSITO: Descrive il nome univoco dell'immagine docker.
TAG: Ogni immagine è associata a 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 dalla creazione dell'immagine.
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 image mysql dall'host docker.
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.
Wind Up
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.
Hai visto Docker ad alto livello. C'è molto da studiare su docker, come
- Comandi (comandi più potenti)
- Le immagini Docker sono un tipo di contenitore (Crea le tue immagini personalizzate)
- Rete con Docker (impostare e configurare la rete)
- Stack di Docker (servizi di raggruppamento richiesti da un'applicazione)
- Docker Compose è uno strumento che consente di creare un contenitore (strumento per la gestione e l'esecuzione di più contenitori)
- Sciame di Docker (raggruppamento e gestione di una o più macchine su cui è in esecuzione la finestra mobile)
Se hai trovato questo affascinante e vuoi saperne di più, ti consiglio di iscriverti a uno dei corsi elencati di seguito. Erano educativi e giusti al punto, secondo me.
Se sei un principiante assoluto, ti consiglio iscriversi in questo corso, che è stato preparato appositamente per te.
Se hai un po' di esperienza con Docker e sei a tuo agio con i fondamenti ma vuoi saperne di più, ti consiglio iscriversi in questo corso, che si concentra su argomenti Docker avanzati. È un'abilità a prova di futuro che sta guadagnando terreno solo ora.
Investire tempo e denaro nello studio di Docker non è qualcosa di cui ti pentirai.
Note finali
Spero che questo articolo ti sia stato utile. Sentiti libero di condividerlo. Grazie, buona giornata.
Image Source:
- Immagine 1: https://hub.docker.com/
- Immagine 2: www.docker.com
- Immagine 3: https://docs.docker.com/v17.12/engine/docker-overview/
Fonte: https://www.analyticsvidhya.com/blog/2021/10/a-complete-guide-on-docker-for-beginners/
- 11
- 9
- attività
- Tutti
- Consentire
- Amazon
- Amazon Web Services
- Amazon Web Services (AWS)
- analitica
- Applicazioni
- applicazioni
- applicazioni
- argomenti
- in giro
- articolo
- AWS
- MIGLIORE
- costruire
- Costruzione
- aziende
- Challenge
- il cambiamento
- carica
- codice
- computer
- Contenitore
- Tecnologie Container
- continua
- Costi
- Creazione
- Corrente
- dati
- giorno
- sviluppare
- disturbare
- docker
- Contenitore Docker
- educativo
- Ambiente
- eccetera
- uscita
- esperienza
- Infine
- Nome
- Gratis
- function
- Fondamenti
- grande
- guida
- Hardware
- Alta
- Come
- Tutorial
- HTTPS
- Immagine
- Indiana
- Intel
- sicurezza
- IT
- Le
- Lingua
- Le Lingue
- laptop
- con i più recenti
- principale
- IMPARARE
- apprendimento
- Livello
- elenchi
- località
- logo
- Lunghi
- machine learning
- macchine
- Media
- modello
- soldi
- cambiano
- Rete
- internazionale
- reti
- numeri
- offrire
- ufficiale
- online
- operativo
- sistema operativo
- Opinione
- Opzione
- Opzioni
- organizzazioni
- Altro
- Altri
- Panico
- PayPal
- PC
- performance
- Fisico
- piattaforma
- Piattaforme
- porte
- presenti
- un bagno
- Prodotto
- Produzione
- Programma
- Programmazione
- linguaggi di programmazione
- Programmi
- la percezione
- Python
- Requisiti
- Risorse
- Risultati
- problemi
- Rotolo
- Correre
- running
- Scalabilità
- Scala
- Scienze
- Servizi
- set
- Condividi
- condiviso
- Un'espansione
- Taglia
- So
- Software
- piattaforma software
- RISOLVERE
- lo spazio
- quadrato
- Stage
- inizia a
- Regione / Stato
- Stato dei servizi
- Tornare al suo account
- Studio
- sottoscrizione
- di successo
- sistema
- Tech
- Consulenza
- dice
- Tesla
- il mondo
- tempo
- pista
- Training
- Ubuntu
- Università
- Università
- Aggiornanento
- Aggiornamenti
- us
- utenti
- Visualizza
- virtuale
- macchina virtuale
- sito web
- servizi web
- OMS
- parole
- mondo