Docker ha preso d'assalto il mondo sin dal suo inizio nel 2013. Se sei un programmatore esperto che crea innovazione utilizzando gli stack moderni, è probabile che tu abbia lavorato o almeno sentito parlare di Docker. Non preoccuparti se sei un principiante e hai difficoltà a comprendere il docker. Abbiamo preparato questa guida per introdurre la finestra mobile ai principianti e delineato i 40 comandi più utili della finestra mobile. Sebbene la finestra mobile non riguardi solo comandi e interfacce, una padronanza dei comandi di base ti aiuterà a visualizzarne il funzionamento quasi senza sforzo.
Nozioni fondamentali su Docker
Sei anni fa, Docker è nato come provider di virtualizzazione a livello di sistema operativo che consentiva agli sviluppatori di distribuire i propri prodotti all'interno di container. Puoi pensare ai container come a delle mini macchine virtuali. Fornisce funzionalità simili agli strumenti Linux VMware ma richiede risorse CPU molto basse. Di conseguenza, le aziende possono distribuire migliaia di prodotti in un'unica piattaforma.
Docker ottiene questo consumo di risorse di basso livello in base alla sua progettazione. Fornisce meno isolamento rispetto alle macchine guest VMware autonome ed elimina molte funzionalità indesiderate non richieste dalle applicazioni in esecuzione nei server. Quindi, la scelta di uno da Docker e da hypervisor a tutti gli effetti come VMware dipende esclusivamente dai requisiti del progetto.
Un'altra caratteristica utile di Docker è che fornisce ambienti esatti per i tuoi prodotti. Supponiamo che tu stia creando un'app mobile e desideri condividere il progetto con altri collaboratori. Di solito, devono scaricare le librerie e i framework esatti con spesso la stessa versione richiesta dalla tua app. Porta a vari problemi di configurazione e riduce significativamente gli sforzi di sviluppo.
Poiché Docker crea un'immagine dell'ambiente del prodotto, tutti i tuoi collaboratori possono scaricare questa immagine e utilizzarla indipendentemente dalla loro configurazione di sistema. Docker recupererà e costruirà l'ambiente da solo. Imparerai la maggior parte di questo attraverso i nostri esempi.
Comprensione di Dockerfile
In Docker, Dockerfile è il componente che ci consente di definire l'ambiente di uno strumento. Non è altro che un file di testo contenente istruzioni scritte in un formato comprensibile al runtime docker. La creazione e la gestione dei Dockerfile sono semplici. Quindi lasceremo lo studio sintattico di Dockerfiles per un altro giorno.
In pratica, utilizzerai Dockerfile per definire i pacchetti utilizzati dalla tua applicazione, recuperarli e crearli. Quando condividi questo Dockerfile con i collaboratori, questi possono configurare facilmente l'ambiente utilizzando la finestra mobile per creare questa immagine. Si spera che questa conoscenza semplice ma essenziale sia sufficiente per aiutarti a comprendere i comandi di cui discutiamo oggi.
Utili comandi Docker da padroneggiare
Docker è cresciuto enormemente sin dai suoi primi giorni. Oggi offre molteplici servizi che soddisfano le diverse esigenze di virtualizzazione. Quindi, ci sono una miriade di comandi disponibili per il cli docker. I nostri editor hanno selezionato i comandi più utilizzati poiché ti aiuteranno a comprendere meglio i concetti fondamentali.
Comandi di base della finestra mobile per principianti
Discutiamo i comandi fondamentali di docker nella sezione seguente. Ti aiuteranno a far girare i tuoi container e forniranno alcune informazioni tanto necessarie sulla finestra mobile.
1. Crea un contenitore utilizzando immagini da Docker Hub
Docker Hub è il repository Docker ufficiale per le immagini Docker. Contiene migliaia di immagini predefinite create da sviluppatori e aziende open source. Puoi facilmente avviare un contenitore mobile funzionante utilizzando un'immagine da questo repository.
$ docker create -it ubuntu:xenial bash
Il comando precedente estrae l'immagine Ubuntu Xenial da Docker Hub e crea un contenitore utilizzando questa immagine. Il flag -it viene utilizzato per indicare alla finestra mobile di aggiungere il terminale integrato a questo contenitore. Inoltre, la parte bash dice alla finestra mobile di eseguire il comando bash.
2. Elenca i contenitori Docker
Una volta creato, ti consigliamo di verificare se il contenitore è stato creato correttamente o meno. Il comando ps dice a Docker di elencare i contenitori correnti.
$ docker ps
È probabile che questo comando non visualizzi alcun contenitore in esecuzione. Succede perché non hai ancora avviato il tuo contenitore Docker. Tuttavia, puoi utilizzare il -a flag per dire alla finestra mobile di elencare tutti i contenitori.
$ docker ps -a
Questo comando dovrebbe visualizzare il contenitore che hai creato nel comando precedente.
3. Avvia il tuo contenitore
Per utilizzare i tuoi contenitori nella finestra mobile, devi prima avviarli. Il comando di avvio della finestra mobile ti consente di farlo molto rapidamente, come mostrato nell'esempio successivo.
$ docker start CONTAINER_ID
Qui, CONTAINER_ID è l'ID del tuo contenitore. Lo otterrai quando esegui il comando docker ps -a. Copialo da lì e usalo per questo esempio. Avvierà il tuo container in pochi secondi.
4. Connessione al tuo container
Una volta avviato correttamente, dovrai connetterti a questo contenitore per poterlo utilizzare. Il comando Docker Attach è qui per questo scopo. Il comando successivo ti mostra come connetterti al container che hai creato in precedenza.
$ docker attach CONTAINER_ID
Ciò comporterà una modifica nel prompt. E ora sei all'interno di un contenitore basato su Ubuntu Xenial. Ciò che fai all'interno di questo contenitore rimarrà al suo interno. Puoi verificare il contenitore eseguendo cat /etc/issue.
5. Terminare il contenitore
Puoi terminare facilmente un contenitore attivo utilizzando il comando di arresto mobile. È uno dei comandi docker più utili per i principianti poiché consente di uscire facilmente da un contenitore in esecuzione. Il comando successivo ti mostra come funziona.
$ docker stop CONTAINER_ID
Dovrai eseguirlo da un altro terminale poiché il terminale precedente esegue il container e non ha una finestra mobile al suo interno. Un'altra soluzione semplice è uscire semplicemente dal contenitore usando Ctrl + D o digitando exit all'interno del contenitore.
6. Eliminazione di un contenitore
Poiché i contenitori sono come un piccolo pezzo di macchine virtuali, puoi eliminarli facilmente senza affrontare le conseguenze nella macchina host. Usa il comando seguente per eliminare il contenitore che hai creato in precedenza.
$ docker rm CONTAINER_ID
Eliminerà il contenitore all'istante. Tuttavia, verranno eliminati anche tutti i file e le configurazioni effettuate all'interno di questo contenitore. Quindi, assicurati di spostarli altrove se ne avrai bisogno in futuro.
7. Uccidere un container
Docker consente inoltre agli utenti di terminare un container in esecuzione. La differenza tra fermare un container e ucciderne uno è abbastanza sottile, almeno in Docker. Quando usi Docker Stop, prima termina i processi in esecuzione all'interno del contenitore, quindi termina il contenitore.
$ docker kill CONTAINER_ID
Tuttavia, il comando docker kill uccide l'intero processo del contenitore in esecuzione nella macchina host. Ciò potrebbe causare una configurazione errata indesiderata o danneggiare i processi del contenitore. Quindi, fai attenzione quando usi tali comandi docker per Ubuntu.
8. Distacco dai contenitori
Supponiamo che tu abbia iniziato e ti sia attaccato a un contenitore. Ora vuoi lasciare questo contenitore in esecuzione ma vuoi usare la tua sessione terminale. Poiché i comandi della finestra mobile stop e kill terminano il contenitore, non puoi usarli per il tuo scopo.
Ctrl+P Ctrl+Q
Tenere premuta la combinazione di tasti sopra all'interno di un contenitore in esecuzione ti staccherà da quel contenitore. Ad esempio, tengo semplicemente premuto Ctrl e premi P e D uno dopo l'altro.
9. Copia di Contenuti tra Contenitori e File System
Spesso potresti voler copiare i file di configurazione del tuo prodotto corrente dal contenitore e nel filesystem o anche in altri contenitori. Il comando docker cp ti consente di farlo. Agisce come il comando cp -a di Unix e copia i contenuti in modo ricorsivo.
$ docker cp CONTAINER_ID:/test_file test_file
Questo comando copierà il file_test dal contenitore con CONTAINER_ID alla macchina ospite. Il prossimo ci mostra come copiare un documento dall'host a un contenitore.
$ docker cp test_file CONTAINER_ID:/test_file
10. Esecuzione di comandi all'interno di container
Sebbene tu possa eseguire comandi direttamente da un container in esecuzione, potresti non voler allegare container tutto il tempo, soprattutto se hai centinaia di container. Poiché si tratta di uno scenario comune, il runtime docker fornisce un comando affidabile per eseguire comandi specifici del contenitore dall'istanza del terminale dell'amministratore.
$ docker exec CONTAINER_ID command
Ciò ti consentirà di eseguire il comando all'interno di CONTAINER_ID contenitore.
11. Elenca tutte le immagini Docker
Le immagini Docker sono l'elemento costitutivo dei contenitori. Come dovresti ricordare, i contenitori vengono creati utilizzando un'immagine come base. È normale che gli sviluppatori abbiano più immagini Docker nei loro sistemi. Il prossimo comando ci mostra come elencare tutte le immagini nella tua macchina.
$ docker images
Chiamando semplicemente questo comando verranno visualizzate tutte le immagini della finestra mobile di primo livello insieme alle loro dimensioni, tag e repository. Il -q l'opzione può essere utilizzata solo per recuperare l'IMAGE_ID .
12. Rimozione delle immagini Docker
A volte potresti voler rimuovere una o più immagini della finestra mobile che non sono più necessarie. Il comando successivo mostra come farlo.
$ docker rmi <IMAGE_ID>
Tuttavia, se l'immagine è contrassegnata da più repository, dovrai eliminarla nel modo seguente.
$ docker rmi REPOSITORY:TAG
Puoi trovare queste informazioni quando esegui le immagini della finestra mobile dei comandi.
Comandi Docker produttivi per sviluppatori intermedi
Se hai già afferrato il concetto di finestra mobile e contenitori, potresti voler esaminare alcune funzionalità avanzate. Nella sezione seguente discutiamo vari utili comandi della finestra mobile destinati ad aumentare la produttività degli sviluppatori.
13. Aggiunta di volumi persistenti per i contenitori
Quindi, quando eliminiamo un contenitore, tutti i dati ad esso associati vengono persi. Docker consente agli sviluppatori di creare "volumi ” che forniscono una memorizzazione permanente per questi dati. I volumi sono semplicemente un meccanismo che lega il tuo contenitore a uno spazio predefinito sul tuo filesystem.
$ docker create -it -v $(pwd):/var/www ubuntu:xenial bash
L'esecuzione del comando precedente legherà la directory di lavoro corrente a /var/www posizione del tuo contenitore. Ora puoi modificare i file nella tua directory attuale e le modifiche si rifletteranno nella finestra mobile.
14. Creazione ed esecuzione di container utilizzando Docker Run
Finora, abbiamo prima creato i nostri contenitori docker e poi li abbiamo avviati. Tuttavia, docker ci consente di eseguire entrambe queste operazioni utilizzando un solo comando. Dai un'occhiata all'esempio qui sotto per vedere come funziona.
$ docker run -it -d ubuntu:xenial bash
Quando esegui questo comando, preleverà l'immagine Xenial, creerà il contenitore e lo avvierà con bash. Tuttavia, non vedrai l'effetto direttamente nel tuo terminale. Questo perché abbiamo indicato alla finestra mobile di eseguire questo contenitore in background utilizzando -d bandiera. L'eliminazione di questo ti porterà al contenitore non appena viene creato.
15. Creazione di un contenitore denominato
Il –nome L'opzione può essere utilizzata per creare contenitori che portano nomi specifici. Puoi usarli in sostituzione di CONTAINER_ID per la maggior parte dei comandi della finestra mobile. Il comando successivo lo mostra in azione.
$ docker create --name TEST nginx
Questo comando estrarrà l'immagine Nginx da Docker Hub e creerà il contenitore chiamato TEST in questo caso. Ora puoi avviarlo e allegare la tua sessione per utilizzare il contenitore. Funziona allo stesso modo con il comando di esecuzione della finestra mobile.
16. Esporre i porti per i container
Puoi comunicare con i tuoi contenitori direttamente dall'host senza utilizzare il runtime Docker. Funziona utilizzando una sorta di schemi di rete definiti dall'amministratore. Esporre alcune porte per il container è una tecnica così diffusa.
$ docker run --name NEW nginx -p 8080:80
Il comando precedente crea un contenitore denominato NUOVO e vincola il suo porto 80 al porto 8080 del sistema ospite. Quindi, ora potrai inviare richieste/risposte al tuo container utilizzando questa porta.
17. Cerca le modifiche in un contenitore
Spesso la minima configurazione errata può causare problemi indesiderati e richiedere ore per il debug. Il comando docker diff torna utile in molti di questi casi. Puoi usarlo per ispezionare qualsiasi modifica nel filesystem del tuo container.
$ docker diff CONTAINER_ID
Quindi, se sai per certo che un determinato contenitore è completamente integro, puoi utilizzare questo comando di tanto in tanto per visualizzare le modifiche nel filesystem di questo contenitore.
18. Creazione di una nuova immagine da contenitori modificati
Docker consente agli sviluppatori di creare un'immagine completamente nuova basata sulle modifiche di un container già esistente. Questo verrà utilizzato quando desideri creare più contenitori per diverse fasi della tua applicazione.
$ docker commit CONTAINER_ID REPOSITORY:TAG
Il comando precedente creerà una nuova immagine utilizzando CONTAINER_ID contenitore.
19. Server di monitoraggio per container Docker
Il comando docker events consente agli sviluppatori di monitorare i server per informazioni in tempo reale su contenitori, immagini, plug-in e molti altri. Puoi provarlo nel tuo sistema usando due shell della riga di comando.
$ docker events
Immettere il comando sopra nella prima shell. Ora genera un contenitore Docker in un'altra shell. Esegui alcuni comandi docker all'interno di quel contenitore e riceverai notifiche in tempo reale nel primo terminale.
20. Ispeziona le cronologie delle immagini
Come discusso in precedenza, le immagini sono gli elementi costitutivi dei contenitori docker. Quindi, puoi facilmente visualizzare le cronologie delle immagini per rilevare problemi improvvisi in un contenitore. È semplice utilizzare questo comando.
$ docker history IMAGE_ID
Ottieni semplicemente l'ID immagine del contenitore usando docker ps e usalo come mostrato sopra. Mostrerà come viene creata l'immagine corrente.
21. Caricamento di immagini Docker da Tars
Un'altra grande caratteristica della finestra mobile è la possibilità di caricare immagini da tar. Consente inoltre agli utenti di caricare immagini dallo standard input. La sintassi del comando di caricamento è mostrata di seguito.
$ docker load < IMAGE.tar.gz
Puoi anche usare il seguente comando.
$ docker load --input IMAGE.tar
Ora elenca le immagini della finestra mobile per verificare gli effetti di questi comandi.
22. Visualizza informazioni a livello di sistema su Docker
La visualizzazione delle informazioni a livello di sistema sul runtime della finestra mobile ti aiuterà a monitorare i tuoi contenitori. Inoltre, fornisce informazioni cruciali che possono essere utili ai debugger grazie alla sua natura rivelatrice. Usa il comando seguente per visualizzarlo nel tuo sistema host.
$ docker info
Sebbene apparentemente semplice, questo comando fornirà una pletora di informazioni riguardanti sia la macchina host che i contenitori docker.
23. Rinominare i contenitori Docker
Uno dei comandi della finestra mobile più utili per avviare gli sviluppatori è il comando di ridenominazione della finestra mobile. È un semplice comando che si limita a rinominare il contenitore, ma ha un grande significato per i principianti.
$ docker rename CONTAINER NEW_NAME
Puoi utilizzare CONTAINER_ID o il parametro Name per rappresentare il tuo container. Il NEW_NAME campo è per il nuovo nome del contenitore. Puoi ottenere sia il nome che l'ID di un contenitore usando il comando docker ps -a.
24. Riavvio dei contenitori Docker
Spesso dovrai occuparti di contenitori che sono impiccati o hanno qualche nuovo problema. Uno dei tanti motivi potrebbe essere il consumo di risorse extra. Il riavvio dei contenitori dovrebbe essere la prima cosa da fare in questi casi, come avviene con i computer.
$ docker restart CONTAINER[S]
Per impostazione predefinita, il comando precedente riavvierà il contenitore dopo 10 secondi. Tuttavia, puoi specificare questo valore utilizzando -t bandiera. I valori devono essere interi.
Comandi Docker per la rete
È essenziale avere una comunicazione senza problemi tra i tuoi container. Per fortuna, i comandi di rete Docker ti semplificheranno le cose. Abbiamo discusso solo dei comandi di rete di base nella sezione seguente.
25. Elenca tutte le reti
L'utilità di rete è uno dei migliori strumenti del cli docker. Puoi usarlo per elencare tutte le reti disponibili per il tuo demone Docker nel modo seguente.
$ docker network ls
Stamperà tutte le reti che possono essere collegate dai tuoi container.
26. Connettiti alle reti
Puoi connettere rapidamente uno o più contenitori Docker in esecuzione a una rete multi-host. Il comando successivo lo dimostra.
$ docker network connect NET CONTAINER_ID
Qui, NET rappresenta la rete a cui vuoi connetterti e CONTAINER_ID rappresenta il contenitore. Puoi anche utilizzare il nome del contenitore al suo posto.
27. Disconnetti dalle reti
Anche disconnettere le reti da una rete è facile come collegarle. Dai un'occhiata all'esempio qui sotto per scoprire come funziona.
$ docker network disconnect NET CONTAINER_ID
Una volta eseguito, questo comando disconnetterà il contenitore dalla NET Rete. Puoi anche aggiungere il -f flag per forzare la disconnessione.
28. Crea reti
Puoi anche sfruttare il comando di rete Docker per creare reti personalizzate tra i tuoi container. Questo è regolarmente utilizzato nella produzione. Il comando successivo mostra come creare reti di container.
$ docker network create NET
Questo comando può richiedere diverse opzioni aggiuntive per fornire funzionalità avanzate come la specifica dei parametri di rete. Puoi trovare maggiori informazioni su di loro qui.
29. Visualizza informazioni dettagliate sulle reti
Il comando di rete Docker consente agli sviluppatori di monitorare le informazioni di rete in modo molto dettagliato. Rende il debug molto più semplice e la configurazione quasi senza sforzo. Il comando successivo ne mostra un semplice esempio.
$ docker network inspect NET
Questo comando fornirà tutti i tipi di informazioni disponibili per la rete NET . Puoi usare -v flag per rendere l'output più leggibile. Inoltre, puoi utilizzare -f per formattare l'output in base a un modello.
30. Elimina reti
Il comando docker network rm può essere utilizzato per rimuovere molto rapidamente una o più reti di container. Il comando seguente lo dimostra per te.
$ docker network rm NET
Puoi anche rimuovere invece di rm per questo comando poiché sono alias.
31. Elimina tutte le reti inutilizzate
Docker consente agli amministratori di eliminare tutte le reti inutilizzate. Si chiama potatura in termini di docker. Il comando seguente dimostrerà come funziona.
$ docker network prune
È un comando interattivo e chiederà conferma per ogni rimozione. Puoi aggiungere il -f flag per disattivarlo. Questo comando è sicuro poiché non dipende dall'utente.
Comandi Docker vari
Ci sono molti comandi aggiuntivi disponibili per il demone docker. Tuttavia, non possiamo semplicemente discuterli tutti in un'unica guida. Quindi, non allarmarti se non trovi alcuni comandi specifici nel nostro elenco. Ecco alcuni comandi docker aggiuntivi per sistemi simili a Ubuntu.
32. Crea immagini da Dockerfile
Dockerfile è lo strumento di configurazione della build principale per i contenitori Docker. Puoi imparare come crearli qui. In questo esempio, dimostriamo come creare un'immagine contenitore da un Dockerfile.
$ docker build . -t APP:v1
Questo comando creerà l'immagine utilizzando il Dockerfile che risiede nella directory di lavoro corrente. Imposterà APP come nome del repository e v1 come il tag. Dovrai specificare il percorso se il Dockerfile esiste in qualche altra directory.
33. Rimozione di tutte le risorse inutilizzate
Poiché i sistemi host di solito contengono centinaia di container, molto spesso sorgono risorse penzolanti. Può essere improduttivo e può influire sul carico di lavoro del server. Puoi utilizzare il comando seguente per rimuovere tutte queste risorse.
$ docker system prune
Eliminerà tutti i contenitori, i volumi e le reti inutilizzati. Inoltre, puoi aggiungere il -a flag per eliminare tutti i contenitori e le immagini inutilizzati dal runtime della finestra mobile.
34. Rimozione di volumi specifici
Puoi facilmente eliminare alcuni volumi specifici che non sono più necessari ai tuoi contenitori. È una pratica comune durante la produzione. Il comando del volume della finestra mobile può essere utilizzato a questo scopo, come mostrato nell'esempio successivo.
$ docker volume rm VOLUME_NAME
Comporterà la cancellazione del volume specificato. Puoi passare il -f opzione per saltare le conferme.
35. Ricerca di immagini in Docker Hub
Il docker cli consente inoltre agli sviluppatori di cercare immagini specifiche nell'hub Docker direttamente dal terminale. A questo scopo puoi utilizzare il comando di ricerca nella finestra mobile.
$ docker search nginx
Una volta eseguito, cercherà l'immagine Nginx ufficiale nel repository ufficiale. Puoi aggiungere diversi filtri per restringere il campo o specificare la tua ricerca.
36. Elimina contenitori all'uscita
Puoi creare contenitori che verranno eliminati al termine del lavoro e all'uscita da esso. Può essere utile in diverse situazioni, ad esempio per la risoluzione dei problemi. Il comando successivo lo mostra in azione.
$ docker run --rm --it xenial /bin/bash
Questo comando crea e avvia un contenitore basato su Xenial con bash in esecuzione all'interno. Puoi fare il tuo personale qui e non appena termini il container, il motore Docker eliminerà questo container automaticamente.
37. Ottieni registri di rete su Host
Avere a portata di mano i log delle reti di container è estremamente utile. È possibile utilizzare il comando seguente per ottenere i registri del contenitore sul computer host.
$ journalctl -u docker.service
Puoi trovare la maggior parte delle soluzioni per la risoluzione dei problemi esaminando l'output di questo comando.
38. Esporta file system container come tar
Il docker cli fornisce il comando export che può essere utilizzato per esportare il filesystem di un container come archivio tar. Dai un'occhiata al comando seguente per capire come funziona.
$ docker export giant_panda > new.tar
Questo comando è equivalente al comando successivo.
$ docker export --output="new.tar" giant_panda
39. Visualizza le informazioni sulla versione
Puoi facilmente visualizzare le informazioni sulla versione per il tuo client Docker e le controparti del server con i comandi seguenti.
$ docker version
Puoi anche ottenere la versione del demone Docker insieme alle informazioni sulla build usando quella successiva.
$ docker -v
40. Visualizza le informazioni della guida
La documentazione Docker è semplicemente stimolante. Puoi ottenere aiuto sul demone generale usando semplicemente la finestra mobile dei comandi.
$ docker
Per ottenere dati aggiuntivi sui comandi figlio, utilizza la seguente sintassi.
$ docker command[S] --help $ docker network --help
Quindi puoi facilmente estendere la profondità della documentazione cli.
Pensieri finali
I comandi Docker sono essenziali per i manutentori di sistema e gli sviluppatori moderni. È difficile spiegare con precisione l'impatto della finestra mobile sulle moderne distribuzioni di applicazioni. Quasi tutte le aziende tradizionali hanno adattato la finestra mobile. Quindi, opportunità di lavoro ben pagate sono disponibili anche per i laureati CS in tutto il mondo. Quindi, l'apprendimento di alcuni di questi comandi si rivelerà un grande investimento per i futuri ingegneri. Speriamo di essere stati in grado di fornirti le conoscenze da te ricercate. Commenta i tuoi pensieri e facci sapere se hai altre domande su Docker.