Dockerfile è un semplice file di testo che contiene tutti i comandi che l'utente potrebbe chiamare sulla riga di comando per assemblare o creare un'immagine. Con l'aiuto della build docker, puoi facilmente automatizzare la build che esegue più comandi definiti nel dockerfile in successione.
Ad esempio, vuoi scaricare l'immagine docker dall'hub docker per le tue esigenze di sviluppo specifiche. Quindi, vuoi aggiornare l'immagine, installare alcuni pacchetti per il tuo processo di sviluppo. In questo caso, puoi creare un dockerfile, includere tutti i parametri per le tue esigenze specifiche e creare la tua immagine personalizzata. Dopo aver creato un dockerfile, puoi usarlo più e più volte per creare la stessa immagine senza installare manualmente tutti i pacchetti necessari per il tuo processo di sviluppo.
Dockerfile di base
Prima di lavorare con dockerfile se è importante sapere come creare un dockerfile. Dockerfile include parole chiave specifiche che possono essere utilizzate per creare un'immagine specifica. Di seguito è riportata una breve spiegazione di tutte le parole chiave utilizzate in un dockerfile:
- A PARTIRE DAL: Viene utilizzato per definire l'immagine di base, su cui costruiremo.
- INSERISCI: viene utilizzato per aggiungere file al contenitore in fase di compilazione. In parole povere, RUN viene utilizzato per eseguire comandi e conferma il risultato
- CORRERE: Viene utilizzato per aggiungere livelli all'immagine di base, installando componenti.
- CMD: Viene utilizzato per eseguire comandi all'inizio del contenitore. Questi comandi vengono eseguiti solo quando non sono stati specificati argomenti durante l'esecuzione del contenitore.
- PUNTO D'ENTRATA: viene utilizzato per eseguire comandi durante il processo di inizializzazione del contenitore. Devi usare un ENTRYPOINT nel tuo dodefile se vuoi avviare automaticamente un contenitore dopo aver creato un'immagine.
- ENV: viene utilizzato per definire le variabili di ambiente nel runtime del contenitore.
- ESPORRE: viene utilizzato per specificare la porta di ascolto per abilitare la rete in fase di esecuzione.
- MANUTENTORE: Viene utilizzato per specificare il nome e l'ID e-mail del creatore dell'immagine.
- UTENTE: Viene utilizzato per specificare il nome utente utilizzato per eseguire il contenitore.
- VOLUME: viene utilizzato per consentire l'accesso dal contenitore alla directory sull'host Docker.
- WORKDIR: Viene utilizzato per specificare il percorso del comando da eseguire in fase di esecuzione.
- ETICHETTA: viene utilizzato per aggiungere etichette all'immagine della finestra mobile.
Creazione del file Docker
In questa sezione, creeremo un dockerfile per creare un'immagine del server LAMP dall'immagine di base di Ubuntu.
Per prima cosa, dovrai creare una directory per memorizzare il dockerfile. Puoi crearlo con il seguente comando:
mkdir LAMPADAQuindi, crea una directory denominata Dockerfile all'interno della directory:
nano LAMP/DockerfileAggiungi le seguenti righe:
DA ubuntu: più recenteMANTENENTE Hitesh Jethva
ENV DEBIAN_FRONTEND=non interattivo
ESEGUI apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
CMD ["apachectl","-D","PRIMA PI"]
ESPORRE 8080
Salva e chiudi il file quando hai finito.
Costruire un'immagine con Dockerfile
Dopo aver creato il Dockerfile, puoi facilmente creare un'immagine LAMP personalizzata con l'aiuto del Dockerfile.
Innanzitutto, cambia la directory in LAMP ed esegui il comando seguente per creare l'immagine da quel file:
cd LAMPADAdocker build -t "lamp:Dockerfile".
Il comando precedente avvierà il download dell'ultima immagine di Ubuntu dall'hub Docker e installerà i pacchetti necessari specificati nel Dockerfile. Una volta che l'immagine è stata creata con successo, dovresti vedere il seguente output:
Invio del contesto di compilazione al demone Docker 2.048kBPassaggio 1/6: DA ubuntu:latest
più recente: estrazione da libreria/ubuntu
54ee1f796a1e: Pull completo
f7bfea53ad12: Pull completato
46d371e02073: Estrazione completata
b66c17bbf772: Pull completo
Riassunto: sha256:31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Stato: scaricata un'immagine più recente per ubuntu:latest
---> 4e2eef94cd6b
Fase 2/6: MANTENENTE Hitesh Jethva
---> In esecuzione in 047977af2c2a
Rimozione contenitore intermedio 047977af2c2a
---> 1331df625c4c
Passaggio 3/6: ENV DEBIAN_FRONTEND=non interattivo
---> In esecuzione in 3597152c7a1b
Rimozione contenitore intermedio 3597152c7a1b
---> 86c82c95e75d
Passaggio 4/6: ESEGUI apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Rimozione contenitore intermedio 322532299fd9
---> f6897a9554f7
Passaggio 5/6: CMD ["apachectl", "-D", "PRIMA PI]"]
---> In esecuzione in 669635bc8bcb
Rimozione contenitore intermedio 669635bc8bcb
---> e8400eb2e677
Passaggio 6/6: ESPORRE 8080
---> In esecuzione in 937ae2b2d305
Rimozione del contenitore intermedio 937ae2b2d305
---> 2123a857361d
Costruito con successo 2123a857361d
Lampada contrassegnata con successo:Dockerfile
Ora puoi elencare la tua nuova immagine creata eseguendo il seguente comando:
immagini dockerDovresti vedere il seguente output:
TAG DELL'ARCHIVIO ID IMMAGINE CREATO DIMENSIONIlamp Dockerfile 2123a857361d 44 secondi fa 520MB
ubuntu ultimo 4e2eef94cd6b 8 giorni fa 73.9 MB
Ora hai in mano un'immagine del server LAMP personalizzata. Puoi anche vedere la cronologia di ogni comando con il seguente comando:
lampada cronologia docker:DockerfileDovresti vedere il seguente output:
IMMAGINE CREATA CREATA DA TAGLIA COMMENTO2123a857361d 16 minuti fa /bin/sh -c #(nop) EXPOSE 8080 0B
e8400eb2e677 16 minuti fa /bin/sh -c #(nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 16 minuti fa /bin/sh -c apt-get update -y && apt-get inst… 446MB
86c82c95e75d 17 minuti fa /bin/sh -c #(nop) ENV DEBIAN_FRONTEND=nonin… 0B
1331df625c4c 17 minuti fa /bin/sh -c #(nop) MAINTAINER Hitesh Jethva 0B
4e2eef94cd6b 8 giorni fa /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
Creazione di un contenitore dall'immagine LAMP
Ora puoi eseguire un contenitore dalla tua immagine usando il seguente comando:
docker run -dit lamp:DockerfileUna volta avviato il contenitore, dovresti vedere il seguente output:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Puoi verificare il contenitore in esecuzione utilizzando il seguente comando:
finestra mobile psDovresti ottenere il seguente output:
ID CONTAINER IMMAGINE COMANDO STATO CREATO NOMI PORTEc14794784eb2 lamp:Dockerfile "apachectl -D FOREGR… " 2 minuti fa Su 2 minuti 0.0.0.0:8080->8080/tcp quirky_ramanujan
Conclusione
In questa guida, hai imparato cos'è Dockerfile e come creare un'immagine docker con Dockerfile. Questo è molto utile per creare le tue immagini personalizzate invece di commettere modifiche a un'immagine tirata.