Dieser Artikel "Docker Compact Manual" besteht aus 4 Elementen. Weitere Artikel finden Sie hier.
Postleitzahl | Untertitel und Zugriffsziel |
---|---|
1 | Grundlegende / grundlegende Befehle |
2 | Mount- und Datenpersistenz |
3 | docker-compose |
4 | Erstellen Sie ein benutzerdefiniertes Bild(* Dieser Beitrag) |
Wenn Sie Ihre eigene App erstellen möchten, benötigen Sie einen benutzerdefinierten Container. Es enthielt nicht nur das Bild von Docker Hub, sondern auch die Daten, die ich einschließen wollte Sie müssen ein benutzerdefiniertes Docker-Image erstellen. Dieses Mal konzentrieren wir uns darauf, wie Sie ein benutzerdefiniertes Docker-Image erstellen.
Dinge, die Sie überprüfen müssen, bevor Sie ein benutzerdefiniertes Bild erstellen Der Docker-Mitarbeiter hat die Best Practices für Dockerfile veröffentlicht. Wenn Sie diese bewährte Methode bis zu einem gewissen Grad nicht befolgen Es kann schwer zu verstehen, schwer zu bedienen, nicht wartbar oder fehlerhaft sein. Es wird empfohlen, es basierend auf diesem Inhalt zu erstellen.
Best practices for writing Dockerfiles
Diejenigen, die es für Englisch hielten: raised_hand: Es gibt eine Site, die vom japanischen Lokalisierungsprojekt übersetzt wurde. : entspannt: Bitte greifen Sie von der folgenden Seite zu.
Beachten Sie, dass Sie den Aktualisierungsverlauf überprüfen sollten. Wenn der Update-Verlauf alt ist, sollten Sie auch die offizielle Website überprüfen.
Es gibt auch eine Methode zum Erstellen eines Container-Images aus einem Container (Docker-Commit). Es ist üblich, die Docker-Datei und die Daten, die in das Image aufgenommen werden sollen, im selben Arbeitsverzeichnis zu speichern.
Hinweis In der Docker-Datei werden die Anweisungen von Anfang an zeilenweise ausgeführt. Mit anderen Worten, wenn die Beschreibungsreihenfolge geändert wird, tritt ein Fehler auf oder ein unbeabsichtigter Container wird erstellt.
bestellen | Ausführungsinhalt |
---|---|
FROM | Basisbild angeben |
ADD | Fügen Sie dem Bild Dateien und Ordner hinzu. Wenn Sie eine komprimierte Datei angeben, wird diese automatisch erweitert, was praktisch ist. Sie können auch eine entfernte Datei außerhalb des Verzeichnisses angeben, in dem sich die Docker-Datei befindet. |
COPY | Fügen Sie dem Bild Dateien und Ordner hinzu Die komprimierte Datei wird nicht erweitert und so wie sie ist kopiert Es können nur Dateien in dem Verzeichnis angegeben werden, in dem sich die Docker-Datei befindet. |
RUN | Befehlsausführung beim Erstellen eines Images |
CMD | Standardbefehl, der ausgeführt wird, wenn der Container gestartet wird (Wenn der von Docker Create oder Docker Run auszuführende Befehl weggelassen wird) Konkretisieren |
ENTRYPOINT | Zum Zeitpunkt der Image-Ausführung (wenn Docker erstellt oder Docker ausgeführt wird) Befehlsausführung erzwingen |
ONBUILD | Führen Sie beliebige Anweisungen aus, wenn der Build abgeschlossen ist |
EXPOSE | Teilen Sie dem Bildbenutzer den angenommenen Kommunikationsport mit |
VOLUME | Kommunizieren Sie den dauerhaften Datenspeicherort an Image-Benutzer |
ENV | Definition der Umgebungsvariablen |
WORKDIR | RUN,CMD,ENTRYPOINT,ADD,Geben Sie das Arbeitsverzeichnis für COPY an |
SHELL | Shell-Spezifikation zur Erstellungszeit |
LABEL | Name / Versionsnummer / Herstellerinformation |
USER | RUN,CMD,Der Benutzer, der den von ENTRYPOINT angegebenen Befehl ausführt Legen Sie die Gruppe fest (kein USER angegeben ist root) |
ARG | docker build Deklarieren Sie die Argumente, die angegeben werden können, wenn |
STOPSIGNAL | Für das Programm, das im Container ausgeführt wird, wenn Docker stoppt Ändern Sie das zu sendende Signal (Die Regel ist SIGTERM) |
HEALTHCHECK | Passen Sie die Integritätsprüfungsmethode an, um die Lebendigkeit des Containers zu überprüfen |
Ab wann läuft RUN, CMD, ENTRYPOINT? ?? Ich habe auch einen Fehler gemacht. Ich denke, das sollte in der Abbildung in Erinnerung bleiben.
--RUN ist die Phase der Bilderzeugung --CMD, ENTRYPOINT ist die Phase des Container-Starts
Ordnungsgemäße Verwendung von CMD und ENTRY POINT Wie soll ich sie richtig verwenden? ??
** Fazit ** Verwenden Sie in den meisten Fällen CMD. Wenn der Benutzer bei Verwendung von CMD den Befehl explizit beschreibt, wird dies priorisiert. Zum Beispiel, wenn ein Fehler in einem benutzerdefinierten Container auftritt, wenn er von ENTRYPOINT angegeben wird Sie kann nicht geändert werden, da der erzwungene Befehl ausgeführt wird. Dieser Fehler wird weiterhin auftreten. Andererseits ermöglicht CMD dem Benutzer, den Standardbefehl zu belassen oder einen beliebigen Befehl auszuführen.
Benutzerdefinierte Muster in Rails sind ebenfalls verfügbar. Sie können sehen, dass es sich von der Anweisung im offiziellen Bild von Docker Hub unterscheidet.
Offizielle Docker Hub-Schienen
FROM ruby:2.3
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
postgresql-client \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /usr/src/app
COPY Gemfile* ./
RUN bundle install
COPY . .
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]
FROM ruby:2.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
# Add a script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
Trotzdem ist die Ruby-Version von Docker Hub 2.3 und Quickstart ebenfalls 2.5. Zu alt ❗️❗️ Ich möchte, dass es Version 2.6 oder höher ist.
Um eine moderne Rails-Containerumgebung zu erstellen, passen Sie den Inhalt von Quickstart weiter an. Ich denke du solltest es tun.
** Werbung ** Diejenigen, die sich fragten, ob es einfacher wäre, mit Rails eine moderne Entwicklungsumgebung aufzubauen Bitte besuchen Sie diese Seite, die ich gemacht habe.
Handbuch zum Erstellen einer stabilen Entwicklungsumgebung für "Rails6" mit "Docker-compose"
Ich habe Docker in 4 Exemplaren gepostet. Vielen Dank für diejenigen, die bis zum Ende bei uns waren. Wenn Sie es hilfreich finden, würde ich es begrüßen, wenn Sie ** LGTM </ font> ** könnten.
Wenn Sie Fehler haben, lassen Sie es uns bitte wissen. Wir wurden auch von vielen Menschen beraten. Ich möchte mich hier bei Ihnen bedanken.
WEB
Recommended Posts