Docker

Come funziona Dockerfile?

Come funziona Dockerfile?
Puoi distribuire solo un singolo contenitore con l'aiuto dell'immagine docker. Tuttavia, se è necessario distribuire più contenitori (ciascuno per attività diverse) dalla stessa immagine, cosa succede?? Puoi risolvere questo problema con l'aiuto del dockerfile.

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:

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 LAMPADA

Quindi, crea una directory denominata Dockerfile all'interno della directory:

nano LAMP/Dockerfile

Aggiungi le seguenti righe:

DA ubuntu: più recente
MANTENENTE 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 LAMPADA
docker 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.048kB
Passaggio 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 docker

Dovresti vedere il seguente output:

TAG DELL'ARCHIVIO ID IMMAGINE CREATO DIMENSIONI
lamp 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:Dockerfile

Dovresti vedere il seguente output:

IMMAGINE CREATA CREATA DA TAGLIA COMMENTO
2123a857361d 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:Dockerfile

Una volta avviato il contenitore, dovresti vedere il seguente output:

0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208

Puoi verificare il contenitore in esecuzione utilizzando il seguente comando:

finestra mobile ps

Dovresti ottenere il seguente output:

ID CONTAINER IMMAGINE COMANDO STATO CREATO NOMI PORTE
c14794784eb2 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.

Battaglia per Wesnoth 1.13.6 Sviluppo rilasciato
Battaglia per Wesnoth 1.13.6 rilasciato il mese scorso, è la sesta versione di sviluppo nella 1.13.x e offre una serie di miglioramenti, in particolar...
Come installare League Of Legends su Ubuntu 14.04
Se sei un fan di League of Legends, questa è un'opportunità per testare League of Legends. Nota che LOL è supportato su PlayOnLinux se sei un utente L...
Installa l'ultimo gioco di strategia OpenRA su Ubuntu Linux
OpenRA è un motore di gioco di strategia in tempo reale gratuito/libero che ricrea i primi giochi di Westwood come il classico Command & Conquer: Red ...