Docker. crea applicazioni confezionate chiamato container. Ogni contenitore fornisce un ambiente isolato simile a a macchina virtuale (VM). A differenza dei VM, contenitori Docker Non eseguire un sistema operativo completo . Condividono il kernel del tuo host e virtualizzano a livello software.
Nozioni di base Docker.
Docker è diventato uno strumento standard per gli sviluppatori di software e gli amministratori di sistema. È un modo ordinato per lanciare rapidamente le applicazioni senza influire sul resto del tuo sistema. Puoi far girare un nuovo servizio con un singolo
Docker run
comando.
I contenitori incapsulano tutto il necessario per eseguire un'applicazione, dalle dipendenze del pacchetto OS al proprio codice sorgente. Definire i passaggi di creazione di un contenitore come istruzioni in a
Dockerfile.
. Docker utilizza il dockerfile per costruire un
Immagine
.
Le immagini definiscono il software disponibile nei contenitori. Questo è liberamente equivalente ad avviare una VM con un sistema operativo ISO. Se crei un'immagine, qualsiasi utente Docker sarà in grado di avviare la tua app con
Docker run
.
Come funziona Docker?
I contenitori utilizzano le funzioni del kernel del sistema operativo per fornire ambienti parzialmente virtualizzati. È possibile creare contenitori da zero con i comandi come
chroot.
. Questo avvia un processo con una directory principale specificata anziché la radice del sistema. Ma usare le funzionalità del kernel direttamente è irregolare, insicuro e ad errore.
Docker è una soluzione completa per la produzione, la distribuzione e l'uso di contenitori. I rilasci moderni della Docker sono composti da Diversi componenti indipendenti . Innanzitutto, c'è il Docker Cli , che è ciò che interagisci con il terminale. Il CLI invia comandi a a DA DCKER DAEMON. . Questo può funzionare localmente o su un host remoto . Il demone è responsabile della gestione dei contenitori e delle immagini da cui vengono create.
Il componente finale è chiamato il Contenitore Runtime. . Il runtime richiama le funzioni del kernel per lanciare effettivamente i contenitori. Docker è compatibile con RunTimes che aderisce al Specifica OCI. Questo standard aperto consente l'interoperabilità tra diversi strumenti di contenitorizzazione.
Non è necessario preoccuparti troppo del funzionamento interno della Docker quando sei per la prima volta. Installazione
Docker.
Sul tuo sistema ti darà tutto il necessario per costruire ed eseguire contenitori.
Perché così tante persone usano Docker?
I contenitori sono diventati così popolari perché risolvono molte sfide comuni nello sviluppo del software. La capacità di contagirizzare una volta e correre ovunque riduce il divario tra Il tuo ambiente di sviluppo e i tuoi server di produzione.
L'uso di contenitori ti dà fiducia che ogni ambiente è identico. Se hai un nuovo membro del team, hanno solo bisogno di
Docker run
per impostare la propria istanza di sviluppo. Quando avvia il servizio, è possibile utilizzare la tua immagine Docker per dispiegarsi alla produzione. Il
Ambiente dal vivo
Abbinerà esattamente la tua istanza locale, evitando "funziona sugli scenari della mia macchina".
Docker è più conveniente di una macchina virtuale completa. I VM sono strumenti generici progettati per supportare ogni possibile carico di lavoro. Al contrario, i contenitori sono leggeri, autosufficienti e migliori per i casi di utilizzo squillato. Come Docker condivide il kernel dell'host, i contenitori hanno un impatto trascurabile sulle prestazioni del sistema. Il tempo di lancio del contenitore è quasi istantaneo, poiché si stanno solo iniziando i processi, non un intero sistema operativo.
Iniziare
Docker è disponibile su tutte le diffopene distribuzioni Linux. Esegue anche Windows e MacOS. Segui il Istruzioni per la configurazione Docker per la tua piattaforma per ottenerlo e correre.
Puoi verificare che la tua installazione funzioni avviando un semplice contenitore:
Docker run hello-world
Questo inizierà un nuovo contenitore con la base
Ciao mondo
Immagine. L'immagine emette qualche uscita che spiega come utilizzare Docker. Il contenitore quindi esce, ti ritira il terminale.
Creazione di immagini
Una volta che hai corri
Ciao mondo
, Sei pronto per creare le tue immagini Docker. Un Dockerfile descrive come eseguire il tuo servizio
Installazione del software richiesto
e copiando in file. Ecco un semplice esempio usando il server Web Apache:
Dal httpd: Ultimi Esegui Echo "LoadModule Header_module Modules / Mod_headers.so" & GT; & GT; /usr/local/apache2/conf/httpd.conf. Copia .htaccess /var/www/html/.htaccess. Copia index.html /var/www/html/index.html. Copia CSS / / VAR / www / html / css
Il
A PARTIRE DAL
La linea definisce l'immagine di base. In questo caso, stiamo iniziando dall'immagine ufficiale di Apache. Docker applica le istruzioni rimanenti nel tuo dockerfile in cima all'immagine di base.
Il
CORRERE
Stage esegue un comando all'interno del contenitore. Questo può essere qualsiasi comando disponibile nell'ambiente del contenitore. Stiamo consentendo al
intestazione
Modulo Apache, che potrebbe essere utilizzato dal
.htaccess.
file per impostare le regole di routing.
Le linee finali copiano i file HTML e CSS nella directory di lavoro nell'immagine del contenitore. La tua immagine ora contiene tutto il necessario per eseguire il tuo sito web.
Ora puoi costruire l'immagine:
Docker Build -T My-Website: V1.
Docker utilizzerà il tuo Dockerfile per costruire l'immagine. Vedrai l'output nel tuo terminale poiché Docker esegue ciascuna delle tue istruzioni.
Il
-T
nel comando
Tagga la tua immagine
con un dato nome (
My-Sito Web: V1
). Questo rende più facile riferirsi a in futuro. I tag hanno due componenti, separati da un colon. La prima parte imposta il nome dell'immagine, mentre il secondo di solito denota la sua versione. Se ometti il colon, Docker sarà predefinito
usare.
più recente
come versione tag.
Il
.
Alla fine del comando indica a Docker di utilizzare il dockerfile nella directory di lavoro locale. Anche questo
Imposta il contesto di build
, permettendoti di utilizzare file e cartelle nella tua directory di lavoro con
COPIA
istruzioni nel tuo dockerfile.
Una volta creata la tua immagine, puoi avviare un contenitore usando
Docker run
:
Docker Run -D -P 8080: 80 My-Sito Web: V1
Stiamo usando alcune bandiere extra con
Docker run
qui. Il
-D
Bandiera rende il Docker CLI staccò dal contenitore, permettendogli di correre in background. Una mappatura della porta è definita con
-P
, Quindi Port 8080 sulle tue mappe host a Port 80 nel contenitore. Dovresti vedere la tua pagina web se visiti
localhost: 8080.
nel tuo browser.
Le immagini Docker sono formate da strati. Ogni istruzione nel tuo Dockerfile crea un nuovo livello. È possibile utilizzare funzionalità di costruzione avanzate per Riferimento più immagini di base , scartando gli strati intermedi dalle immagini precedenti.
Registri di immagini
Una volta che hai un'immagine, puoi spingerlo a un registro. Registri fornire stoccaggio centralizzato in modo da poter condividere contenitori con gli altri. Il registro predefinito è Hub Docker. .
Quando si esegue un comando che fa riferimento all'immagine, Docker Prima controlla se è disponibile localmente. Se non lo è, proverà a tirarlo da Docker Hub. Puoi tirare manualmente le immagini con il
Docker pull.
comando:
Docker Pull Httpd: Ultimi
Se vuoi pubblicare un'immagine, creare a
Hub Docker.
account. Correre
Login Docker.
e inserisci il tuo nome utente e password.
Quindi, tagga la tua immagine usando il tuo nome utente Docker Hub:
Docker tag my-image: Ultimo Docker-hub-username / My-image: Ultime
Ora puoi spingere la tua immagine:
Docker Push Docker-Hub-Username / My-Image: Ultime
Altri utenti saranno in grado di tirare l'immagine e avviare i contenitori con esso.
Puoi Esegui il tuo registro Se hai bisogno di spazio di archiviazione dell'immagine privata. Diversi servizi di terze parti anche Offri registri Docker. come alternative a Docker Hub.
Gestire i tuoi contenitori
La Docker CLI ha diversi comandi per farti gestire i tuoi contenitori in esecuzione. Ecco alcuni dei più utili da sapere:
Elenco dei contenitori
Docker PS.
Mostra tutti i tuoi contenitori in esecuzione. Aggiungendo il.
-un
La bandiera mostrerà anche i contenitori interrotti.
Fermarsi e avviare i contenitori
Per fermare un contenitore, correre
Docker Stop My-Container
. Sostituire
My-Container.
con il nome o l'ID del contenitore. Puoi ottenere queste informazioni dal
Ps.
comando. Un contenitore fermato viene riavviato con
Docker avvia il mio contenitore
.
I contenitori di solito corrono per tutto il tempo in cui il loro processo principale rimane vivo.
Riavvia le politiche
Controlla cosa succede quando un contenitore si ferma o il tuo host si riavvia. Passaggio
--restart sempre
a
Docker run
Per effettuare un riavvio del contenitore immediatamente dopo che si ferma.
Ottenere una shell.
Puoi
Esegui un comando in
un contenitore usando
Docker Exec My-Container My-Command
. Questo è utile quando si desidera richiamare manualmente un eseguibile separato per il processo principale del contenitore.
Aggiungi il
-esso
Bandiera se hai bisogno di accesso interattivo. Questo ti consente di abbandonare una shell in esecuzione
Docker exec -it my-container sh
.
Logs del monitoraggio
Docker raccoglie automaticamente l'uscita emessa ai flussi di ingresso e uscita standard di un contenitore. Il
Docker registra il mio contenitore
Il comando mostrerà i registri di un contenitore all'interno del terminale. Il
--Seguire
Bandiera imposta un flusso continuo in modo da poter visualizzare i registri in tempo reale.
Pulizia delle risorse
I vecchi contenitori e immagini possono rapidamente accumularsi sul tuo sistema. Utilizzo
Docker RM My-Container
Per eliminare un contenitore con il suo ID o nome.
Il comando per le immagini è
Docker RMI My-Image: Ultime
. Passa l'ID dell'immagine o il nome del tag completo. Se si specifica un tag, l'immagine non verrà eliminata finché non ha più tag assegnati. Altrimenti, il tag dato verrà rimosso ma gli altri tag dell'immagine rimarranno utilizzabili.
I clean-up alla rinfusa sono possibili usando il
Docker Prune.
comando
. Questo ti dà un modo semplice per rimuovere tutti i contenitori arrestati e le immagini ridondanti.
Gestione grafica
Se il terminale non è la tua cosa, puoi usare strumenti di terze parti per Impostare un'interfaccia grafica per Docker . Web Dashboard consente di monitorare e gestire rapidamente la tua installazione. Aiutano anche a prendere il controllo remoto dei tuoi contenitori.
Archiviazione dei dati persistenti
I contenitori Docker sono effimeri per impostazione predefinita. Le modifiche apportate al filesystem di un contenitore non persistono dopo che il contenitore si ferma. Non è sicuro
Esegui qualsiasi forma di sistema di archiviazione file
in un contenitore è iniziato con un base
Docker run
comando.
Ci sono alcuni approcci diversi a Gestione dei dati persistenti . Il più comune è utilizzare un volume Docker. I volumi sono unità di archiviazione che sono montati in filesystem contenitore. Qualsiasi dato in un volume rimarrà intatto dopo che il contenitore collegato si arresta, permettendoti di collegare un altro contenitore in futuro.
Mantenimento della sicurezza
I carichi di lavoro rinnovibili possono essere più sicuri delle loro controparti di metallo nudo, poiché Docker fornisce una certa separazione tra il sistema operativo e i servizi. Nondimeno, Docker è un potenziale problema di sicurezza, come
normalmente funziona come
radice
e potrebbe essere sfruttato per eseguire software dannoso.
Se stai solo eseguendo Docker come strumento di sviluppo, l'installazione predefinita è generalmente sicura da usare. I server di produzione e le macchine con una presa daemon esposta alla rete dovrebbero essere indurite prima di andare in diretta.
Audit La tua installazione di Docker identificare potenziali problemi di sicurezza. Ci sono Strumenti automatizzati disponibili che può aiutare a trovare punti deboli e suggerire soluzioni. Puoi anche immagini contenitori individuali scansione per le questioni che potrebbero essere sfruttate da dentro.
Uso dei contenitori multipli
Il
Docker.
comando funziona solo con un container alla volta. Spesso Ti consigliamo di utilizzare i contenitori in forma aggregata.
docker Compose
è uno strumento che consente di definire i vostri contenitori in modo dichiarativo in un file YAML. È possibile avviare tutti in su con un unico comando.
Questo è utile quando il progetto dipende da altri servizi, come ad esempio un backend web che si basa su un server di database. È possibile definire entrambi i contenitori nel vostro
finestra mobile-compose.yml
e beneficiare di una gestione semplificata con
networking automatica
.
Ecco un semplice
finestra mobile-compose.yml
file:
versione: "3"
Servizi:
app:
immagine: app-server: ultima
porti:
- 8000: 80
Banca dati:
immagine: database server: ultima
volumi:
- Database-dati: / Dati
volumi:
database di dati:
Questo definisce due contenitori (
app.
e
Banca dati
). Un volume viene creato per il database. Questo viene montato
/dati
nel contenitore. la porta del server applicazione 80 è esposto come 8000 sull'host. Correre
finestra mobile-up comporre -d
a girare su entrambi i servizi, compresa la rete e il volume.
L'uso di Docker Compose consente di
riutilizzabile scrittura
definizioni di contenitore che si può condividere con gli altri. Si potrebbe commettere un
finestra mobile-compose.yml
nel vostro controllo di versione, invece di avere sviluppatori memorize
Docker run
comandi.
Ci sono altri approcci per l'esecuzione di più contenitori, anche. Docker App è una soluzione emergente che fornisce un livello di astrazione. Altrove nell'ecosistema, Podman è un'alternativa Docker che consente di creare “pods” di container all'interno del vostro terminale.
contenitore Orchestration
Docker non è normalmente eseguito così com'è in produzione. E 'ora più comune di utilizzare una piattaforma di orchestrazione come kubernetes o la modalità Docker Swarm. Questi strumenti sono progettati per gestire più repliche contenitore, che migliora la scalabilità e affidabilità.
Docker è solo una componente del movimento containerizzazione ampio. orchestratori
utilizzare la stessa
tecnologie contenitore runtime per fornire un ambiente che è una migliore vestibilità per la produzione. Usando le istanze contenitori multipli
permette di rotolamento aggiornamenti
così come la distribuzione attraverso le macchine, rendendo la distribuzione più resistenti al cambiamento e interruzione. il regolare
Docker.
CLI si rivolge un host e lavora con i singoli contenitori.
Una potente piattaforma per contenitori
Docker ti dà tutto il necessario per lavorare con i contenitori. E 'diventato uno strumento chiave per lo sviluppo del software e la gestione del sistema. I vantaggi principali sono aumentati isolamento e portabilità per singoli servizi.
Fare conoscenza con Docker richiede una comprensione del contenitore e immagine concetti di base. È possibile applicare questi per creare le immagini e ambienti che containerize i carichi di lavoro specializzati.