GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Eine kurze Einführung in Dockerfile

Lassen Sie mich Ihnen in dieser kurzen Anleitung eine kurze Einführung in Dockerfile geben und zeigen Ihnen, wie Sie damit den Prozess der Erstellung benutzerdefinierter Docker-Images automatisieren. Dockerfile ist nichts anderes als eine einfache Textdatei mit Anweisungen zum Erstellen eines Docker-Images. Es enthält alle Befehle, die ein Benutzer auf der Befehlszeile aufrufen könnte, um ein Image zu erstellen. Wir können die Dockerdatei verwenden, um unsere eigenen benutzerdefinierten Images zu erstellen. Wir können diese benutzerdefinierten Docker-Images dann über Docker Hub teilen . Für diejenigen, die sich fragen, ist Docker Hub ein gehosteter Repository-Dienst, der von Docker bereitgestellt wird, um Container-Images zu finden und mit Ihrem Team und natürlich mit jedem auf der Welt zu teilen.

Stellen Sie sich dieses Szenario vor. Früher, wenn wir Jenkins verwenden möchten , dann müssen wir den Jenkins mit vielen Schritten installieren. Dank Dockerhub können wir jetzt das vorgefertigte Container-Image von Jenkins in wenigen Minuten herunterladen und ausführen.

Jenkins-Container-Image in Dockerhub

Um das Jenkins-Image von DockerHub abzurufen, führen Sie Folgendes aus:

# docker pull Jenkins

Sobald wir die Docker-Bilder gezogen haben, können wir sie verwenden, indem wir das Bild mit dem Befehl ausführen:

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

So einfach ist das!

Weitere Informationen zur Verwendung von Docker finden Sie in der folgenden Anleitung.

  • Erste Schritte mit Docker

In Dockerhub sind über 100.000 Container-Images von Softwareanbietern, Open-Source-Projekten und der Community verfügbar. Sie können jedes Container-Image Ihrer Wahl aus Dockerhub suchen und herunterladen und es wie oben gezeigt sofort verwenden.

Dockerfile-Format verstehen

Docker kann Images automatisch erstellen, indem es die Anweisungen liest aus einer Dockerdatei.

Ein typisches Dockerfile enthält die folgenden Anweisungen:

1. VON - Es wird das Basis-Image des Containers festgelegt.

Beispiel:

FROM ubuntu:18.04

Es wird das Basis-Image des Containers als Ubuntu festlegen. Wenn Tag 18.04 nicht angegeben ist, wird ein Tag als „neueste“ verwendet.

2. LABEL - Es ist ein Schlüssel-Wert-Paar, das verwendet wird, um Metadateninformationen des Bildes anzugeben.

Beispiel:

LABEL ENV=”DEVELOPMENT”

3. LAUFEN - Es wird verwendet, um den Befehl auf dem Basisbild auszuführen, und es wird eine neue Ebene erstellt.

Beispiel:

RUN apt-get update
RUN apt-get install tomcat

4. CMD - Es wird verwendet, um einen Befehl festzulegen, der zuerst ausgeführt wird, wenn der Container gestartet wird.

Beispiel:

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

5. AUSSETZEN - Es wird den Port für den Zugriff auf den Container verfügbar machen. Container lauscht auf diesem Netzwerkport. Wir können zugreifen
die Ausgabe über diesen Port.

Beispiel:

EXPOSE 8080

6. WARTER - Es enthält die Details des Autors, der dieses Docker-Image erstellt hat.

Beispiel:

MAINTAINER [email protected]

7. ENV - Es wird verwendet, um Umgebungsvariablen im Schlüssel-Wert-Paar festzulegen. Diese Variablen werden während der Image-Erstellung festgelegt
und sind verfügbar, nachdem der Container erstellt wurde.

Beispiel:

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

8. KOPIEREN - Es wird verwendet, um lokale Dateien in den Container zu kopieren.

Beispiel:

COPY /target/devops.jar devops.jar

9. HINZUFÜGEN - Es funktioniert genauso wie Kopieren, hat aber einige weitere Funktionen, wie wir lokales tar extrahieren und Remote-URL hinzufügen können.

Beispiel:

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

10. Einstiegspunkt - Es wird verwendet, um den Hauptbefehl für das Bild festzulegen. Es funktioniert genauso wie die CMD-Anweisung. Das
Der einzige Unterschied zwischen CMD und ENTRYPOINT besteht darin, dass Anweisungen in ENTRYPOINT nicht überschrieben werden.

Beispiel:

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

11. LAUTSTÄRKE - Es wird ein Einhängepunkt mit dem angegebenen Namen erstellt.

Beispiel:

VOLUME /app/devops

12. BENUTZER - Es wird den Benutzernamen und die Benutzergruppe festlegen, die verwendet werden sollen, wenn das Image ausgeführt wird.

Beispiel:

USER dhruv
USER admin

13. ARBEITSVERZ - Es wird das Arbeitsverzeichnis festgelegt. Es wird das Verzeichnis erstellen, wenn es nicht vorhanden ist.

Beispiel:

WORKDIR /var/lib/

Hier ist ein Dockerfile-Beispiel für Ihre Referenz.

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"]

Erlauben Sie mir, Ihnen ein einfaches Beispiel zu zeigen, wie Sie eine Beispiel-Dockerdatei erstellen und daraus ein Image erstellen.

Erstellen einer Dockerdatei

Erstellen Sie eine Datei namens Dockerfile , fügen Sie den Inhalt in den Dateien hinzu. Im folgenden Beispiel aktualisieren und installieren wir vim und Curl .

# cat dockerfile
FROM alpine

RUN apk update
RUN apk add vim
RUN apk add curl

Dockerfile für Alpine

Jetzt haben wir das Dockerfile an Ort und Stelle. Lassen Sie uns fortfahren und ein Image mit dem Dockerfile erstellen.

Image mit Dockerfile erstellen

Um ein Image aus der Docker-Datei zu erstellen, führen Sie einfach Folgendes aus:

# docker build -t devops .

Bitte beachten Sie den Punkt (.) am Ende.

Gemäß dem obigen Befehl beginnt Docker automatisch mit dem Erstellen von Images, indem es die Anweisungen aus der Dockerfile liest im aktuellen Arbeitsverzeichnis gespeichert.

Wenn das Dockerfile woanders gespeichert ist, können Sie seinen Pfad mit -f angeben kennzeichnen wie unten.

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

Nachdem wir das Image erstellt haben, können wir es mit dem Befehl ausführen:

# docker run -it devops

So kann man mit Dockerfile benutzerdefinierte Container-Images erstellen. Hoffe das hilft. Wir haben nur die Grundlagen behandelt. Mit Dockerfile können Sie noch viel mehr tun. Ich empfehle Ihnen, auf die offizielle Dockerfile-Referenz zu verweisen Anleitung, um mehr darüber zu erfahren.

Empfohlene Lektüre:

  • Erläuterung von Docker-Netzwerkkonzepten
  • Erklärung von Docker-Volumes mit Beispielen
  • So aktualisieren Sie laufende Docker-Container automatisch
  • ctop – Ein Befehlszeilen-Überwachungstool für Linux-Container
  • Portainer – Eine einfachste Art, Docker zu verwalten
  • PiCluster – Eine einfache, webbasierte Docker-Verwaltungsanwendung
  • Dockly – Docker-Container vom Terminal aus verwalten

Über den Autor:

Dhruv Tiwari ist ein DevOps-Ingenieur, der es liebt, Dinge zu automatisieren, mit Linux in großem Maßstab zu arbeiten und von dem Tag zu träumen, an dem Systeme intelligent genug sind, um sich nie mehr bei einer Linux-Box anmelden zu müssen. Reise von CI/CD vom Quellcode über die Codebereitstellung bis zur Produktion.


Docker
  1. So verwenden Sie ein Dockerfile zum Erstellen eines Docker-Images

  2. Eine Einführung in Docker

  3. Aktualisieren eines bereitgestellten Containers basierend auf einem Docker-Image

  4. So übertragen Sie Änderungen an einem Docker-Image

  5. So erstellen Sie ein Docker-Image aus einem Container und einer Docker-Datei

Eine kurze Einführung in Ansible Vault

Was ist ein Docker-Image-Manifest?

Stellen Sie eine Produktions-Docker-MariaDB-Installation bereit

So reduzieren Sie die Docker-Image-Größe in Docker-Containern

So erstellen Sie ein benutzerdefiniertes Docker-Image mit Dockerfile

Teilen von Docker-Images auf Docker Hub