Heim >Technologie-Peripheriegeräte >IT Industrie >So erstellen Sie ein Bild mit der Dockerfile

So erstellen Sie ein Bild mit der Dockerfile

Christopher Nolan
Christopher NolanOriginal
2025-02-18 12:36:13717Durchsuche

How to Build an Image with the Dockerfile

vom Erstellen von Anwendungen, Installation von Abhängigkeiten und Diensten, die automatisierte Bereitstellung und vieles mehr - alles beginnt mit Dockerfile. Lassen Sie uns die Syntax von Dockerfile von Grund auf Komplexität und einige Best Practices beim Erstellen von Docker -Bildern überprüfen.

In diesem Handbuch wird eine Dockerfile geschrieben, die Docker dazu führt, ein minimiertes Linux (Basisbild) für die von uns lieferenden Anwendungen auszuwählen, und wird mit unserem ausgewählten Toolset und einer spezifischen Konfiguration geliefert, um unsere eigene Linux -Verteilung effektiv zu erstellen. Diese Verteilung ist genau richtig geeignet für die Ausführung unserer Anwendungen.

How to Build an Image with the Dockerfile

Schlüsselpunkte

Mit
    Docker können Benutzer „eine Anwendung ausführen, unabhängig davon, wo sie sich befindet, durch Verpacken der Anwendung mit allen erforderlichen Binärdateien, Laufzeitbibliotheken, Backend -Tools, Betriebssystem -Optimierungen und -diensten. sofort geliefert und automatisch bereitgestellt.
  • dockerfile ist eine einfache Textdatei mit Anweisungen zum Erstellen von Bildern in Docker, der Ausgangspunkt für das Erstellen von Anwendungen, die Installation von Abhängigkeiten und Diensten und die automatisierte Bereitstellung ist. Die Syntax von DockerFile ähnelt der von Apache -Konfigurationsdateien und wird nach einem anderen Anweisungen verarbeitet.
  • DockerFile weist Docker an, ein Basisbild (z. B. Linux minimiert) für die Zustellung der Anwendung auszuwählen, und enthält eine Reihe von ausgewählten Tools und spezifischen Konfigurationen, wodurch eine benutzerdefinierte Linux -Verteilung zum Ausführen der Anwendung geeignet ist.
  • Mit
  • DockerFile können Sie bestimmte Tools und Bibliotheken auswählen und installieren, Umgebungsvariablen festlegen, Dateien und Verzeichnisse hinzufügen, Cache -Probleme behandeln und mehr, um sicherzustellen, dass der Container alles hat, was Sie benötigen.
  • Der Befehl docker Build wird verwendet, um Bilder basierend auf Anweisungen in der Dockerfile zu erstellen, während der Befehl docker run verwendet wird, um ein interaktives Terminal mit erstellten Bildern zu starten.
  • Warum Docker
wählen

How to Build an Image with the Dockerfile Mit Docker können Sie "eine Bewerbung erstellen, liefern und ausführen, unabhängig davon, wo Sie sich befinden." Das heißt, Sie können Ihre Anwendung mit allen Binär- und Laufzeitbibliotheken, Backend -Tools, Betriebssystemeinstellungen und sogar spezifischen Diensten verpacken, die für die Ausführung der Anwendung erforderlich sind - und ermöglichen es, automatisch bereitgestellt und bereitgestellt zu werden.

Docker implementierte Software -Container -Technologie ermöglicht dies. Obwohl ich hier nicht auf die Details eingehen werde, können Sie mehr über Docker lesen, welche Software -Container sind und wie sie arbeiten, um Docker, Container und sicherere Software -Zustellung zu verstehen.

Installieren von Docker

Bevor Sie beginnen, müssen Sie Docker installieren, sei es auf dem lokalen Computer oder auf einem Remote -Server.

Glücklicherweise macht die neueste Version von Docker (Version 1.12 nach diesem Schreiben) den Installationsprozess sehr reibungslos und Sie können eine einfache und leicht verständliche Anleitung für Windows, MacOS und Linux erhalten.

dockerfile

Um das Bild in Docker zu erstellen, müssen Sie zunächst die Anweisung für diesen Build und den -Kontext in einer einfachen Textdatei namens Dockerfile festlegen (dazu später mehr). Diese Datei hat eine Syntax, die der Apache -Konfigurationsdatei ähnelt - eine Anweisung pro Zeile und ihre entsprechenden Parameter, alle Anweisungen werden nacheinander verarbeitet. Kommentare beginnen mit # Charakteren und Räumen. Sobald Sie die Dockerfile haben, erstellt der Befehl Docker Build das Bild, das wir später ausführlicher behandeln werden.

Bevor wir mit dem Schreiben der Dockerfile beginnen, werden wir den Arbeitsbereich einrichten. Wir erstellen ein Verzeichnis namens My_Image im Home -Verzeichnis, verwenden es als unser Arbeitsverzeichnis und platzieren die Dockerfile darin:

<code class="language-bash">mkdir ~/my_build
cd ~/my_build
touch Dockerfile</code>
Jetzt sind wir bereit, das Bild zu erstellen.

Wählen Sie Basic Mirror

Wenn Sie ein Bild erstellen, verwenden Sie in den meisten Fällen einen Ausgangspunkt - d. H. Ein anderes Bild. Dies könnte das offizielle Ubuntu, MySQL, WordPress oder ein anderes Bild sein, das in Docker Hub verfügbar ist. Sie können auch die Bilder verwenden, die Sie selbst erstellt haben.

Hinweis : Sie können Ihr eigenes Grundbild mit Dockers Minimum -Bild (Scratch genannt) erstellen, das Ihre eigenen Kernwerkzeuge und Verzeichnisstruktur enthält. Ich werde diesen Prozess hier nicht behandeln, aber Sie können sich auf die Anleitung zum Erstellen von grundlegenden Bildern auf der Docker -Website verweisen.

Wenn Sie beispielsweise mit einer minimierten Debian -Verteilung beginnen möchten, werden Sie Ihre Dockerfile Folgendes hinzufügen:

<code class="language-dockerfile"># 设置基础镜像
FROM debian</code>
von Must sein die erste Anweisung, die Sie beim Schreiben einer Dockerfile verwenden. Beachten Sie, dass Sie auch eine bestimmte Version des Basisbildes verwenden können, indem Sie am Ende des Bildnamens anhängen: und Version_Name. Zum Beispiel:

<code class="language-dockerfile"># 设置基础镜像
FROM debian:sid</code>
Im obigen Code verwenden wir "Sid" Debian (instabile Verteilung). Dies ist auch wichtig, wenn Sie eine bestimmte Version von Ruby oder Python Interpreter, MySQL -Version usw. benötigen. Wenn Sie das offizielle Grundbild eines dieser Tools verwenden. Derzeit halten wir uns in diesem Handbuch an das stabile (stabile) Debian -Bild.

Geben Sie den Betreuer an und fügen Sie Metadaten hinzu

Sie können angeben, wer der Betreuer ist, und ersetzen Sie Lucero del Alba durch Ihren Namen oder Ihre Person oder Ihr Team, die für die Konstruktion verantwortlich sind:

<code class="language-dockerfile"># 作者
MAINTAINER Lucero del Alba</code>
Dies ist nicht erforderlich, aber wir können auch einige Metadaten mit der Label -Anweisung hinzufügen, die später verfügbar ist, wenn das Bild mit dem Befehl Docker Inspect überprüft wird:

<code class="language-dockerfile"># 额外的元数据
LABEL version="1.0"
LABEL description="First image with Dockerfile."</code>
Weitere Informationen zu dieser Funktion finden Sie im Docker -Objekt -Tag.

Erstellen Sie Ihre eigene Verteilung

How to Build an Image with the Dockerfile

Zu diesem Zeitpunkt werden wir einige Tools und Bibliotheken auswählen, die in den Spiegel aufgenommen werden, damit unser Container alles hat, was wir benötigen, um die erwartete Aktion auszuführen. Am Ende dieses Tutorials werden wir einen Job machen, der sehr nahe daran ist, eine Linux -Verteilung zu erstellen.

Einige Container (z. Wir benötigen jedoch häufig eine Konsole, um bestimmte Vorgänge im Container auszuführen. Möglicherweise benötigen wir möglicherweise einige zusätzliche Werkzeuge, da das zugrunde liegende Bild nur die minimalen GNU -Tools bündelt.

Fehlerbehebung von Cache -Problemen

Sie werden mit ziemlicher Sicherheit Probleme mit dem Zwischenspeichern haben, wenn Sie versuchen, zusätzliche Pakete auf Ihrem Bild zu installieren. Dies liegt daran, dass das zugrunde liegende Bild zwischen Metadaten und dem Echtzeit-Repository zwischengespeichert wurde, aus dem Sie Datenänderungen häufig extrahieren.

In einer debianbasierten Verteilung können Sie den folgenden Befehl hinzufügen, bevor Sie ein neues Paket installieren, um dies zu verarbeiten:

<code class="language-bash">mkdir ~/my_build
cd ~/my_build
touch Dockerfile</code>

Grundlegende Werkzeuge

installieren

Tools wie Code -Editor, Laceale, Git oder TMUX - jetzt ist es an der Zeit, alles zu installieren, was Sie danach benötigen, damit sie im Bild gebündelt sind.

Wir werden eine pro Zeile installieren:

<code class="language-dockerfile"># 设置基础镜像
FROM debian</code>

Wir können all dies in einer Zeile installieren, aber wenn wir später Pakete hinzufügen oder entfernen möchten, müssen wir den gesamten Vorgang erneut ausführen. Die beste Praxis hier ist also, ein Paket pro Zeile zu installieren, damit Sie von Dockers Cache profitieren können.

Halten Sie es außerdem einfach. Sie möchten das Tool "nur für den Fall" nicht installieren, da dies die Erstellungszeit und die Bildgröße erhöhen kann.

Installieren Sie die Laufzeitbibliothek für die Anwendung

Wir werden auch unsere Anwendung in diesem Bild liefern. Benötigen Sie eine bestimmte Version von PHP, Ruby oder Python und einigen Modulen? Jetzt ist es an der Zeit, alle Programme und Laufzeiten zu liefern, die für die Bereitstellung der Anwendung benötigt werden.

Sie können nach Belieben angeben, da dieser Container nur so ausgelegt ist, dass Sie Ihre Anwendung ausführen:

In diesem Beispiel werden wir Python 3 zusammen mit Psycopg 2 (zur Verbindung zur Postgresql -Datenbank), dem Python -Schnurrbartmodul und dem YAML -Modul installieren. (Wenn Sie Ihre eigene Dockerfile erstellen, installieren Sie natürlich die spezifischen Abhängigkeiten, die Sie benötigen.)
<code class="language-dockerfile"># 设置基础镜像
FROM debian:sid</code>

Kompilierung und Download -Paket

Ihre Verteilung hat möglicherweise auch keine Pakete für die spezifischen Module oder Programme, die Sie benötigen. Aber Sie müssen es nicht manuell im laufenden Container installieren! Stattdessen können Sie die Run -Anweisung (eine pro Zeile) verwenden, um alle Bibliotheken, die Sie für Ihre Anwendung benötigen, herunterzuladen, zu kompilieren und einzurichten.

Sie können diese Datei sogar in einer separaten Datei einstellen, diese Datei zum Erstellen hinzufügen und ausführen, die wir im Abschnitt "Zustellung" in Ihrem eigenen Anwendungsbereich sehen werden.

Reinigung

Um Ihren Spiegel ordentlich und so klein wie möglich zu machen, ist es am besten am Ende der Installationssequenz

:

aufzuräumen Beachten Sie auch, dass wir APT-Get verwenden, weil wir DEBIAN entschieden haben, aber bitte den entsprechenden Befehl zur Verteilung des Basisbildes verwenden.

<code class="language-dockerfile"># 作者
MAINTAINER Lucero del Alba</code>
Liefern Sie Ihre eigene Anwendung

Der gesamte Zweck des Aufbaus dieser Umgebung besteht darin, dass Sie Ihre Bewerbung reibungslos liefern und sich bereit machen. Um den Inhalt von Dateien, Verzeichnissen und sogar Remote -URLs zum Bild hinzuzufügen, verwenden wir die Anweisung hinzufügen.

Vor dem Hinzufügen von Dateien müssen wir sie jedoch in den entsprechenden

-Kontext einfügen. Um die Operationen zu vereinfachen, setzen wir alles in das oben erwähnte My_Build -Verzeichnis zusammen mit der Dockerfile selbst ein.

Angenommen, wir haben die App und alles, was wir in das Bild einfügen möchten

<code class="language-bash">mkdir ~/my_build
cd ~/my_build
touch Dockerfile</code>
Wir fügen das .Bashrc- und .profile -Skripte zum / root -Verzeichnis im Container hinzu, damit sie ausgeführt werden, wenn wir die Shell im Container starten und den Inhalt der App / in das / App / -verzeichnis im Container kopieren.

wir fügen den folgenden Befehl hinzu:

<code class="language-dockerfile"># 设置基础镜像
FROM debian</code>
Stellen Sie Ihre Umgebung

fest

Schließlich setzen wir einige Umgebungsvariablen fest, die sowohl auf System- als auch auf Anwendungsebene benötigt werden.

Viele von Ihnen verwenden den Standard-Debian-Charakter, der dies tun sollte, aber da wir auf eine internationale Zielgruppe abzielen, lassen Sie uns sehen, wie Sie ein UTF-8-Terminal haben. Wir haben das Ortspaket schon einmal installiert, sodass wir jetzt nur noch die Zeichensatz generieren und die entsprechende Linux -Umgebung einrichten:

<code class="language-dockerfile"># 设置基础镜像
FROM debian:sid</code>
Sie müssen möglicherweise auch einige Umgebungsvariablen für die Anwendung festlegen, um Passwörter und Pfade auszutauschen. DockerFile bietet Env -Anweisungen, um dies genau zu tun:

<code class="language-dockerfile"># 作者
MAINTAINER Lucero del Alba</code>
Beachten Sie, dass Sie beim Starten des Containers auch Umgebungsvariablen aus der Befehlszeile übergeben können. Dies ist möglicherweise geeignet, um einige vertrauliche Informationen (z. B. Passwörter) zu teilen.

Vollständige Dockerfile

Natürlich müssen Sie die Dockerfile anpassen, wie Sie möchten, aber hoffentlich verstehen Sie seine Möglichkeiten.

Dies ist die vollständige Datei:

<code class="language-dockerfile"># 额外的元数据
LABEL version="1.0"
LABEL description="First image with Dockerfile."</code>
Erstellen Sie einen Spiegel

Aus dem Verzeichnis von my_build werden wir den Befehl Docker Build verwenden und das -t -Flag zum "Tag" des neuen Bildes mit dem Namen übergeben, in diesem Fall my_image. .

Dies erzeugt eine lange Ausgabe, bei der jeder "Schritt" eine Richtlinie in unserer Dockerfile ist. Hier ist eine verkürzte Ausgabe:
<code class="language-dockerfile"># 更新源列表
RUN apt-get clean
RUN apt-get update</code>

Listen Sie den Spiegel
<code class="language-dockerfile"># 每行安装一个基本应用程序,以获得更好的缓存
RUN apt-get install -qy git
RUN apt-get install -qy locales
RUN apt-get install -qy nano
RUN apt-get install -qy tmux
RUN apt-get install -qy wget</code>
auf

Wir können den Befehl Docker Images verwenden, um unsere Bilder aufzulisten:

Dies gibt unsere neu erstellte My_image und andere grundlegende Bilder aus, die wir heruntergeladen haben:
<code class="language-dockerfile"># 安装应用程序运行时和模块
RUN apt-get install -qy python3
RUN apt-get install -qy python3-psycopg2
RUN apt-get install -qy python3-pystache
RUN apt-get install -qy python3-yaml</code>

... das war's, unser Spiegel ist bereit, geliefert und rennen zu werden!
<code class="language-dockerfile"># 清理
RUN apt-get -qy autoremove</code>

Starten Sie den Container

Um unser neu erstelltes interaktives Terminal zu starten, werden wir den Befehl Docker Run verwenden:

Nächste Schritte
<code>.bashrc
.profile
app/app.py
app/lib.py
Dockerfile</code>

Ich habe nicht alle Möglichkeiten von Dockerfile eingeführt. Insbesondere habe ich nicht überprüft, wie Sie Ports aussetzen können, damit Sie Dienste ausführen und sogar Container zwischen ihnen verknüpfen können. und andere nützliche Funktionen.

Wir werden diese in zukünftigen Artikeln vorstellen. Derzeit möchten Sie die folgenden Ressourcen überprüfen.

von der Docker -Website:

docerfile reference
  • Best Practice zum Schreiben von Dockerfile
  • von sitepoint:
  • Docker, Container und sicherere Software -Bereitstellung
  • verstehen
  • Docker-Unterkanal
  • Alle Docker-bezogenen Artikel

FAQs zum Erstellen von Bildern mit Dockerfile

Was ist die Bedeutung des Erstellens von Docker -Bildern mithilfe von Dockerfile?

dockerfile ist ein Textdokument, das alle Befehle enthält, die der Benutzer in der Befehlszeile aufrufen kann, um das Bild zusammenzustellen. Die Verwendung von DockerFile vereinfacht den Prozess des Erstellens von Bildern in Docker. Sie können den Prozess automatisieren, wodurch er effizienter und weniger anfällig für Fehler ist. DockerFile bietet auch klare Versionsdokumentationen zum Erstellen von Bildern, was es anderen Entwicklern erleichtert, Ihre Arbeit zu verstehen und zu verwenden oder zu ändern.

Wie optimieren Sie den Build -Prozess mithilfe von Dockerfile?

dockerfile bietet eine Vielzahl von Möglichkeiten, um den Build -Prozess zu optimieren. Eine der effektivsten Möglichkeiten ist die Verwendung mehrstufiger Builds. Auf diese Weise können Sie mehrere aus Anweisungen in Ihrer Dockerfile verwenden. Jeder von der Anweisung kann eine andere Grundlage verwenden, und jede Anweisung beginnt eine neue Bauphase. Sie können optional Artefakte von einer Stufe in eine andere kopieren und alles, was Sie nicht im endgültigen Bild erscheinen möchten.

Was sind die Best Practices für das Schreiben von Dockerfiles?

Es gibt mehrere Best Practices für das Schreiben von Dockerfiles. Zunächst sollten Sie es vermeiden, unnötige Pakete zu installieren, um die Spiegelgröße klein zu halten. Zweitens verwenden Sie mehrstufige Builds, um den Build-Prozess zu optimieren. Drittens sollte jede Dockerfile eine einzige Anwendung darstellen. Wenn Sie mehrere Anwendungen haben, sollten Sie mehrere Dockerfiles verwenden. Schließlich sollten Sie die Datei .Dockerignore -Datei verwenden, um Dateien und Verzeichnisse auszuschließen, die nicht in das Bild enthalten sein sollten.

Wie kann Dockerfile debuggen?

dockerfile kann debuggen werden, indem das Bild erstellt und mit dem Shell -Befehl ausgeführt wird. Wenn der Build fehlschlägt, gibt Docker eine Fehlermeldung zurück, mit der Sie das Problem identifizieren können. Sie können auch den Befehl Run verwenden, um Befehle auszuführen, die Ihnen helfen, Ihre Dockerfile zu debuggen.

Kann ich Umgebungsvariablen in Dockerfile verwenden?

Ja, Sie können Umgebungsvariablen in Ihrer Dockerfile verwenden. Die Env -Richtlinie legt die Umgebungsvariable für diesen Wert fest. Dieser Wert befindet sich in der Umgebung aller nachfolgenden Anweisungen in der Build -Phase und kann auch in vielen Anweisungen inline ersetzt werden.

Wie kopieren Sie Dateien vom Host zu Docker -Bild?

Sie können mit der Kopieranweisung neue Dateien vom Host auf das Docker -Bild kopieren. Kopieren Sie Dateien aus der Quelle im Host zum Ziel im Docker -Bild.

Wie kann man einen Port in einem Docker -Bild aufdecken?

Sie können die Expose -Anweisung verwenden, um den Docker -Container zu benachrichtigen, um zur Laufzeit auf einen bestimmten Netzwerkport zu hören. Dies veröffentlicht jedoch nicht den Port. Um einen Port zu veröffentlichen, müssen Sie das Flag -P -Flag für den Befehl Docker Run verwenden.

Wie richte ich ein Arbeitsverzeichnis in einem Docker -Bild ein?

Sie können mit der WorkDir -Direktive das Arbeitsverzeichnis für einen nachfolgenden Lauf, CMD, Einstiegspunkt, Kopieren und Hinzufügen von Anweisungen in der Dockerfile verwenden.

Wie führe ich Befehle im Docker -Bild aus?

Sie können mit der Run -Anweisung Befehle in einem Docker -Bild ausführen. Dadurch wird jeder Befehl in der neuen Ebene über dem aktuellen Bild ausgeführt und das Ergebnis eingereicht.

Wie gibt ich Standardbefehle für Docker -Bilder an?

Sie können mit der CMD -Anweisung Standardwerte für den ausführenden Container bereitstellen. Diese können ausführbare Dateien enthalten, oder ausführbare Dateien können weggelassen werden. In diesem Fall müssen Sie die Eintragsrichtlinie angeben.

Diese überarbeitete Ausgabe behält die Originalbildformatierung bei und vermeidet signifikante Änderungen an der Bedeutung des Artikels, während Sätze und Absätze für Originalität umformulieren.

Das obige ist der detaillierte Inhalt vonSo erstellen Sie ein Bild mit der Dockerfile. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn