Come eseguire un'istanza Docker da un Dockerfile?

Come Eseguire Un Istanza Docker Da Un Dockerfile



Docker è una piattaforma aperta molto apprezzata, universalmente utilizzata per creare, testare, distribuire e spedire applicazioni in un ambiente containerizzato. Docker utilizza il livello di virtualizzazione del sistema operativo e supporta diversi componenti come contenitori Docker, immagini, reti e volume Docker.

I contenitori Docker sono uno dei componenti essenziali della piattaforma Docker che impacchetta il programma, le impostazioni di configurazione e le dipendenze utilizzando l'immagine Docker. L'immagine Docker è un semplice modello o snapshot di un contenitore che guida il contenitore su come containerizzare un'applicazione. Queste immagini sono per lo più disponibili nel registro ufficiale dell'hub Docker. Gli utenti possono anche progettare queste immagini in base ai requisiti del progetto utilizzando Dockerfile.

Questo blog spiegherà:







Cos'è un Dockerfile?

Un Dockerfile è un normale file di testo che contiene comandi e istruzioni che definiscono la struttura di base di un contenitore Docker. Queste istruzioni possono essere eseguite nel terminale senza alcun file, ma eseguire ciascun comando uno dopo l'altro è un compito frenetico e complesso. Dockerfile consente agli sviluppatori di specificare facilmente tutti i requisiti e le istruzioni in un unico file. Questo file verrà quindi utilizzato per creare il modello di contenitore che è un'immagine Docker. Successivamente, l'immagine docker viene eseguita per avviare l'istanza nel contenitore Docker.



Comandi di base di Dockerfile

Alcuni comandi base di Dockerfile utilizzati per definire lo snapshot di base del contenitore sono elencati di seguito in forma tabellare:



Comandi Descrizione
DA IL ' DA Il comando viene utilizzato per definire l'immagine di base per il modello di contenitore. Queste immagini vengono estratte dal registro ufficiale Docker Docker Hub.
MANUTENTORE IL ' MANUTENTORE Il comando definisce le informazioni sull'autore (nome ed e-mail) che sta creando l'immagine Docker.
DIR.LAVORO Specifica la directory di lavoro di un'applicazione containerizzata.
COPIA Utilizzato per copiare i file di origine e di configurazione dal sistema host al percorso specificato del contenitore Docker.
AGGIUNGERE IL ' AGGIUNGERE Il comando ' è simile al comando ' COPIA ' ma supporta anche l'URL remoto per aggiungere il file dall'URL al percorso del contenitore, ad esempio dal repository GitHub al percorso del contenitore.
CORRERE IL ' CORRERE ' viene utilizzato per eseguire i comandi nel contenitore. In Dockerfile viene utilizzato principalmente per gestire e installare dipendenze aggiuntive all'interno del contenitore.
CMD CMD ' definisce i punti predefiniti dei contenitori Docker. Fondamentalmente definisce gli eseguibili e i parametri predefiniti del ' PUNTO D'ENTRATA ”.
PUNTO D'ENTRATA IL ' PUNTO D'ENTRATA Il comando viene utilizzato anche per impostare gli eseguibili del contenitore Docker. Fondamentalmente imposta le applicazioni predefinite che vengono utilizzate ogni volta in un contenitore. Il comando ENTRYPOINT viene utilizzato anche una volta in un Dockerfile.
UTENTE Questo comando viene utilizzato per impostare l'UID (nome utente) per eseguire i comandi nel contenitore
VOLUME IL ' VOLUME 'Il comando viene utilizzato per associare o montare il volume esterno (file system) con un contenitore.
ENV IL ' ENV Il comando viene utilizzato per impostare le variabili di ambiente del contenitore.
ARG IL ' ARG ' viene utilizzato per passare gli argomenti all'interno del contenitore.
ESPORRE IL ' ESPORRE Il comando specifica le porte di esposizione su cui verrà eseguito il contenitore.
COSTRUISCI Legge le istruzioni dall'immagine di base ma attiva queste istruzioni tramite l'immagine downstream.
ETICHETTA IL ' ETICHETTA ' viene utilizzato per specificare i metadati dello snapshot del contenitore.

Come eseguire un'istanza Docker da un Dockerfile in Docker?

Per eseguire un'istanza o un container Docker utilizzando Dockerfile, creare innanzitutto un Dockerfile. Quindi, crea lo snapshot di base per il contenitore utilizzando Dockerfile. Successivamente, esegui lo snapshot per avviare l'istanza Docker.





Seguire le istruzioni riportate di seguito per l'illustrazione.

Passaggio 1: crea un Dockerfile

Innanzitutto, crea un Dockerfile. Ricorda che Dockerfile non ha alcuna estensione di file. Successivamente, incolla i seguenti comandi nel file:



DA Golang: 1.8

DIR.LAVORO / andare / src / app

COPIA main.go .

CORRI, vai a costruire -O server web .

ESPORRE 8080 : 8080

PUNTO D'ENTRATA [ './server web' ]

Passaggio 2: crea il file di programma

Successivamente, crea un nuovo file denominato ' main.go ” che contiene il semplice programma Golang. A questo scopo incollare nel file il seguente programma:

pacchetto principale
importare (
'fmt'
'tronco d'albero'
'rete/http'
)

gestore della funzione ( In http.ResponseWriter, r * http.Richiesta ) {
fmt.Fprintf ( In , 'Ciao! Benvenuto nel tutorial LinuxHint' )
}
funzione principale ( ) {
http.HandleFunc ( '/' , gestore )
log.Fatal ( http.ListenAndServe ( '0.0.0.0:8080' , zero ) )
}

Passaggio 3: generare un'istantanea del contenitore

Ora crea lo snapshot Docker del contenitore utilizzando ' docker build -t -f . ':

compilazione della finestra mobile -T vai-img -F Dockerfile .

Nel comando sopra, il ' -T L'opzione ' imposta il nome o il tag dell'immagine, ' -F L'opzione ' specifica il percorso del Dockerfile da cui il motore Docker deve leggere il contesto di compilazione:

Per verificare se l'immagine è stata creata correttamente o meno, eseguire il comando ' immagini della finestra mobile 'comando:

immagini docker go-img

L'output mostra che abbiamo creato con successo lo snapshot del contenitore dal Dockerfile:

Passaggio 4: eseguire l'istantanea per avviare il contenitore

Ora avvia l'istanza di Docker nel contenitore Docker eseguendo lo snapshot del contenitore creato nel passaggio precedente:

esecuzione della finestra mobile -P 8080 : 8080 --nome vai avanti -D vai-img

Nel comando sopra, il ' -P L'opzione ' esegue il contenitore sul ' 8080 “porto”, “ -nome ' imposta il nome del contenitore e il ' -D L'opzione ' esegue il contenitore in modalità distaccata (servizio in background):

Per verificare se il contenitore è in esecuzione o meno, elenca i contenitori in esecuzione utilizzando il comando ' finestra mobile ps 'comando:

finestra mobile p.s

Ora vai a ' http://localhost:8080 ' e verificare se l'applicazione è in esecuzione sulla porta di esposizione o meno:

L'output precedente indica che abbiamo effettivamente avviato l'istanza Docker utilizzando Dockerfile.

Come eseguire un'istanza da un Dockerfile in Docker Compose?

Docker Compose è un altro importante plugin della piattaforma Docker che ci consente di eseguire più istanze in contenitori diversi contemporaneamente. Gli utenti possono anche eseguire l'istanza Docker da Dockerfile utilizzando il plug-in di composizione Docker. A scopo illustrativo, seguire i passaggi indicati.

Passaggio 1: crea il Dockerfile

Innanzitutto, crea un Dockerfile. Ad esempio, stiamo utilizzando lo stesso Dockerfile e file di programma utilizzati nella sezione precedente:

DA Golang: 1.8

DIR.LAVORO / andare / src / app

COPIA main.go .

CORRI, vai a costruire -O server web .

ESPORRE 8080 : 8080

PUNTO D'ENTRATA [ './server web' ]

Passaggio 2: crea il file docker-compose.yml

Successivamente, crea un ' docker-compose.yml ' e copia le seguenti coppie di chiavi nel file:

versione: '3'

Servizi:

ragnatela:
costruire: .
porti:
- 8080 : 8080

Nello snipped sopra menzionato:

  • Servizi ' viene utilizzato per specificare i servizi di composizione che verranno eseguiti in un contenitore separato. A titolo illustrativo, abbiamo configurato un solo servizio “ ragnatela ' per mantenere il codice pulito e semplice.
  • costruire 'La coppia di chiavi viene utilizzata per leggere il contesto di compilazione dal Dockerfile. Qui, la finestra mobile leggerà le istruzioni dal Dockerfile e costruirà il contenitore di conseguenza.
  • porti La chiave ' definisce le porte di esposizione su cui verrà eseguito il contenitore.

Passaggio 3: avvia l'istanza Docker

Ora esegui l'istanza Docker in un contenitore utilizzando il comando ' docker-componi 'comando:

docker-componi -D

Per verifica, controlla l'elenco dei contenitori di composizione in esecuzione utilizzando il pulsante ' docker-compose ps 'comando:

docker-compose p.s

L'output mostra che ' ragnatela ' Il servizio è in esecuzione con successo nel ' golangapp-web-1 'contenitore:

Passare alla porta di esposizione del servizio di composizione e verificare se il programma è in esecuzione o meno. Il risultato seguente mostra che abbiamo avviato con successo l'istanza Docker da Dockerfile utilizzando Docker Compose:

Si tratta di eseguire un'istanza docker da un Dockerfile.

Conclusione

Per eseguire un'istanza Docker in un contenitore da un Dockerfile, crea prima Dockerfile. Aggiungi i comandi all'interno del file per creare l'immagine o il modello del contenitore Docker. Quindi, crea l'immagine del contenitore o lo snapshot utilizzando il comando ' docker build -t -f . 'comando. Ora esegui l'immagine del contenitore per avviare l'istanza Docker. Gli utenti possono anche utilizzare Docker Compose per eseguire l'istanza Docker da Dockerfile. Questo post ha illustrato come eseguire un'istanza Docker da un Dockerfile.