GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Una breve introduzione a Dockerfile

In questa breve guida, vorrei darti una breve introduzione a Dockerfile e ti insegnerò come usarlo per automatizzare il processo di creazione di immagini docker personalizzate. File Docker non è altro che un semplice file di testo con le istruzioni per creare un'immagine docker. Contiene tutti i comandi che un utente può chiamare sulla riga di comando per creare un'immagine. Possiamo usare il dockerfile per creare le nostre immagini personalizzate. Possiamo quindi condividere queste immagini Docker personalizzate tramite Docker Hub . Per chi se lo chiede, Docker Hub è un servizio di repository ospitato fornito da Docker per trovare e condividere immagini di container con il tuo team e, naturalmente, con chiunque nel mondo.

Immagina questo scenario. In precedenza, se vogliamo utilizzare Jenkins , quindi dobbiamo installare Jenkins con molti passaggi coinvolti. Grazie a Dockerhub, ora possiamo scaricare ed eseguire l'immagine del contenitore predefinita di Jenkins in un paio di minuti.

Immagine del contenitore Jenkins in DockerHub

Per estrarre l'immagine Jenkins da DockerHub, esegui:

# docker pull Jenkins

Dopo aver estratto le immagini della finestra mobile, possiamo usarle eseguendo l'immagine usando il comando:

# docker run -it -d -p 8080:8080 jenkins

È così semplice!

Per saperne di più sull'utilizzo di Docker, fai riferimento alla seguente guida.

  • Introduzione a Docker

In Dockerhub sono disponibili oltre 100.000 immagini di container di fornitori di software, progetti open source e la community. Puoi cercare e scaricare qualsiasi immagine contenitore di tua scelta da Dockerhub e iniziare a utilizzarla immediatamente come mostrato sopra.

Comprendere il formato Dockerfile

Docker può creare immagini automaticamente leggendo le istruzioni da un Dockerfile.

Un tipico Dockerfile contiene le seguenti istruzioni:

1. DA - Imposterà l'immagine di base del contenitore.

Esempio:

FROM ubuntu:18.04

Imposterà l'immagine di base del contenitore come Ubuntu. Se il tag 18.04 non è specificato, prenderà un tag come "più recente".

2. ETICHETTA - È una coppia chiave-valore utilizzata per specificare le informazioni sui metadati dell'immagine.

Esempio:

LABEL ENV=”DEVELOPMENT”

3. Corri - Viene utilizzato per eseguire il comando sull'immagine di base e creerà un nuovo livello.

Esempio:

RUN apt-get update
RUN apt-get install tomcat

4. CMD - Viene utilizzato per impostare un comando da eseguire per primo all'avvio del contenitore.

Esempio:

CMD [“java”, “-jar”, “app.jar”]

5. ESPOSIZIONE - Esporrà la porta per accedere al container. Il contenitore sarà in ascolto su questa porta di rete. Possiamo accedere
l'output utilizzando questa porta.

Esempio:

EXPOSE 8080

6. MANTENENTE - Fornirà i dettagli dell'autore che ha creato questa immagine Docker.

Esempio:

MAINTAINER [email protected]

7. AMBIENTE - Viene utilizzato per impostare le variabili di ambiente nella coppia chiave-valore. Queste variabili vengono impostate durante la creazione dell'immagine
e sono disponibili dopo la creazione del contenitore.

Esempio:

ENV DB_NAME=”MySQL”
ENV DB_VERSION=”8.0”

8. COPIA - Viene utilizzato per copiare i file locali nel contenitore.

Esempio:

COPY /target/devops.jar devops.jar

9. AGGIUNGI - Funziona come la copia ma ha alcune funzionalità in più come possiamo estrarre tar locale e aggiungere URL remoto.

Esempio:

ADD devops.tar.xz / .
ADD http://example.com/abc.git /usr/local/devops/

10. PUNTO DI ENTRATA - Serve per impostare il comando principale per l'immagine. Funziona come l'istruzione CMD. Il
l'unica differenza tra CMD ed ENTRYPOINT è che le istruzioni non vengono sovrascritte in ENTRYPOINT.

Esempio:

ENTRYPOINT [“java”, “-jar”, “app.jar”]

11. VOLUME - Creerà un punto di montaggio con il nome specificato.

Esempio:

VOLUME /app/devops

12. UTENTE - Imposta il nome utente e il gruppo di utenti da utilizzare durante l'esecuzione dell'immagine.

Esempio:

USER dhruv
USER admin

13. WORKDIR - Imposterà la directory di lavoro. Creerà la directory se non presente.

Esempio:

WORKDIR /var/lib/

Ecco un esempio di Dockerfile come riferimento.

FROM ubuntu:latest
MAINTAINER Dhruv Tiwari "[email protected]"
RUN apt-get install -y software-properties-common python
RUN add-apt-repository ppa:chris-lea/node.js
RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ precise universe" >>
/etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nodejs
RUN mkdir /var/www
ADD app.js /var/www/app.js
CMD ["/usr/bin/node", "/var/www/app.js"]

Consentitemi di mostrarvi un semplice esempio per creare un Dockerfile di esempio e creare un'immagine utilizzandolo.

Creazione di un Dockerfile

Crea un file denominato Dockerfile , aggiungi il contenuto nei file. Nell'esempio seguente, stiamo aggiornando e installando il vim e arricciare .

# cat dockerfile
FROM alpine

RUN apk update
RUN apk add vim
RUN apk add curl

dockerfile per alpine

Ora abbiamo il Dockerfile in atto. Andiamo avanti e costruiamo un'immagine usando il Dockerfile.

Crea immagine utilizzando Dockerfile

Per creare un'immagine dal Dockerfile, esegui semplicemente:

# docker build -t devops .

Per favore, fai attenzione al punto (.) alla fine.

Come per il comando precedente, Docker inizierà a creare immagini automaticamente leggendo le istruzioni dal Dockerfile salvato nella directory di lavoro corrente.

Se il Dockerfile è salvato da qualche altra parte, puoi menzionarne il percorso usando -f segnala come sotto.

# docker build -f /path/to/a/Dockerfile .

Dopo aver creato l'immagine, possiamo eseguirla usando il comando:

# docker run -it devops

Questo è il modo in cui è possibile creare immagini di un contenitore personalizzate utilizzando Dockerfile. Spero questo sia di aiuto. Abbiamo coperto solo le basi. C'è molto di più che puoi fare con Dockerfile. Ti consiglio di fare riferimento al riferimento Dockerfile ufficiale guida per saperne di più.

Lettura consigliata:

  • Spiegazione dei concetti di rete Docker
  • Spiegazione dei volumi Docker con esempi
  • Come aggiornare automaticamente i contenitori Docker in esecuzione
  • ctop – Uno strumento di monitoraggio della riga di comando per i container Linux
  • Portainer:il modo più semplice per gestire Docker
  • PiCluster:una semplice applicazione di gestione Docker basata sul Web
  • Dockly:gestisci i container Docker dal terminale

Informazioni sull'autore:

Dhruv Tiwari è un ingegnere DevOps che ama automatizzare le cose, lavorare con Linux su larga scala e sognare il giorno in cui i sistemi saranno abbastanza intelligenti da non dover mai accedere a una macchina Linux. Viaggio di CI/CD dal codice sorgente alla distribuzione del codice alla produzione.


Docker
  1. Introduzione ai contenitori Docker

  2. Introduzione alle immagini Docker

  3. Introduzione a Docker

  4. Come creare e configurare automaticamente immagini Docker personalizzate con Dockerfile – Parte 3

  5. Come creare un'immagine Docker da un contenitore e un file Docker

Una breve introduzione ad Ansible Vault

Che cos'è un manifesto di immagine Docker?

Distribuire un'installazione di MariaDB di Production Docker

Come ridurre le dimensioni dell'immagine Docker nei contenitori Docker

Come creare un'immagine Docker personalizzata con Dockerfile

Condivisione di immagini Docker su Docker Hub