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.
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
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:
mkdir ~/my_build cd ~/my_build touch DockerfileJetzt 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:
# 設置基礎鏡像 FROM debianvon 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:
# 設置基礎鏡像 FROM debian:sidIm 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:
# 作者 MAINTAINER Lucero del AlbaDies 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:
# 額外的元數(shù)據(jù) LABEL version="1.0" LABEL description="First image with Dockerfile."Weitere Informationen zu dieser Funktion finden Sie im Docker -Objekt -Tag.
Erstellen Sie Ihre eigene Verteilung
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:
mkdir ~/my_build cd ~/my_build touch Dockerfile
Grundlegende Werkzeuge
installierenTools 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:
# 設置基礎鏡像 FROM debian
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.)# 設置基礎鏡像 FROM debian:sid
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.
# 作者 MAINTAINER Lucero del AlbaLiefern 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
mkdir ~/my_build cd ~/my_build touch DockerfileWir 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:
# 設置基礎鏡像 FROM debianStellen 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:
# 設置基礎鏡像 FROM debian:sidSie 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:
# 作者 MAINTAINER Lucero del AlbaBeachten 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:
# 額外的元數(shù)據(jù) LABEL version="1.0" LABEL description="First image with Dockerfile."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:
# 更新源列表 RUN apt-get clean RUN apt-get update
Listen Sie den Spiegel
# 每行安裝一個基本應用程序,以獲得更好的緩存 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 wgetauf
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:
# 安裝應用程序運行時和模塊 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
... das war's, unser Spiegel ist bereit, geliefert und rennen zu werden!
# 清理 RUN apt-get -qy autoremove
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!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Je pr?zise wir versuchen, KI -Modelle zu funktionieren, desto gr??er werden ihre Kohlenstoffemissionen - mit bestimmten Aufforderungen, die bis zu 50 -mal mehr Kohlendioxid erzeugen als andere, laut einer kürzlich durchgeführten Studie.

Das Hauptanliegen bei Big Tech, das mit künstlicher Intelligenz (KI) experimentiert, ist es nicht, dass es die Menschheit dominieren k?nnte. Das eigentliche Problem liegt in den anhaltenden Ungenauigkeiten von Gro?sprachmodellen (LLMs) wie der Open AI -Chatgpt, Googlees Gemini und Google

Je fortgeschrittener künstlicher Intelligenz (KI) wird, desto mehr "halluzinieren" und liefern falsche oder ungenaue Informationen.

Argumentationsmodelle für künstliche Intelligenz (KI) sind nicht ganz so f?hig, wie sie erscheinen. In Wirklichkeit wird ihre Leistung vollst?ndig zusammengefasst, wenn die Aufgaben zu komplex werden, so Forscher von Apple. Verarbeitung von Modellen wie Anthropics Claude, offen, offen

Die britische National Crime Agency (NCA) hat vier Personen verhaftet, die der Beteiligung an den Cyber-Angriffen auf Markierungen und Spencer (M & S), Co-op und Harrods.According zu einer Erkl?rung verd?chtigen, zwei 19-j?hrige M?nner, ein 17-j?hriger O-o

Post-Quantum-Kryptographie hat für Cybersecurity-Führungskr?fte eine oberste Priorit?t geworden, aber jüngste Untersuchungen zeigen, dass einige Organisationen die Bedrohung mit der Ernsthaftigkeit, die es verlangt, nicht behandeln.

Laut einer kürzlich durchgeführten Umfrage, in der auch eine betr?chtliche Anzahl von Unternehmen im vergangenen Jahr von der Malware betroffen war

Red Hat hat eine neue Self-Service-Plattform eingeführt, die einen leichteren Zugang zu seinem Entwicklerprogramm bietet. Die Initiative "Red Hat Enterprise Linux für Business Developers
