Docker Compact Manual (4: Erstellen eines benutzerdefinierten Bildes)

Zunaechst

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)

Zweck dieses Artikels

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.

Best Practices für Dockerfile

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.

Best Practices für Dockerfile

Beachten Sie, dass Sie den Aktualisierungsverlauf überprüfen sollten. Wenn der Update-Verlauf alt ist, sollten Sie auch die offizielle Website überprüfen.

スクリーンショット 2020-10-26 17.01.10.png

Erstellen Sie ein benutzerdefiniertes Bild aus einer Docker-Datei

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.

スクリーンショット 2020-10-26 19.34.51.png

Anweisungen, die in der Docker-Datei angegeben werden können

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 buildDeklarieren 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

Einfach, sich auf Teil 1 einzulassen

Ab wann läuft RUN, CMD, ENTRYPOINT? ?? Ich habe auch einen Fehler gemacht. Ich denke, das sollte in der Abbildung in Erinnerung bleiben. スクリーンショット 2020-10-26 20.58.54.png

--RUN ist die Phase der Bilderzeugung --CMD, ENTRYPOINT ist die Phase des Container-Starts

Einfach Teil 2 zu machen

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.

Beispielbeispiel

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

Quickstart: Compose and Rails

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"

Schließlich

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.

Referenzmaterialien / Referenzquellen-Site

WEB

Bücher
  • [Einführung in die praktische Containerentwicklung von Docker / Kubernetes (Technische Überprüfung)](https://www.amazon.co.jp/Docker-Kubernetes-%E5%AE%9F%E8%B7%B5%E3%82%B3 % E3% 83% B3% E3% 83% 86% E3% 83% 8A% E9% 96% 8B% E7% 99% BA% E5% 85% A5% E9% 96% 80-% E5% B1% B1% E7% 94% B0-% E6% 98% 8E% E6% 86% B2 / dp / 4297100339 / ref = sr_1_1? __Mk_ja_JP =% E3% 82% AB% E3% 82% BF% E3% 82% AB% E3% 83% 8A & dchild = 1 & keywords = Docker% 2F Kubernetes +% E5% AE% 9F% E8% B7% B5% E3% 82% B3% E3% 83% B3% E3% 83% 86% E3% 83% 8A% E9% 96% 8B% E7% 99% BA% E5% 85% A5% E9% 96% 80 & qid = 1603714747 & sr = 8-1)
  • [Docker-Container-Konstruktion für taktiles Lernen der Cloud-Infrastruktur anhand der Grundlagen (Nikkei BP)](https://www.amazon.co.jp/%E3%81%95%E3%82%8F%E3%81%A3% E3% 81% A6% E5% AD% A6% E3% 81% B6% E3% 82% AF% E3% 83% A9% E3% 82% A6% E3% 83% 89% E3% 82% A4% E3% 83% B3% E3% 83% 95% E3% 83% A9-Docker% E5% 9F% BA% E7% A4% 8E% E3% 81% 8B% E3% 82% 89% E3% 81% AE% E3% 82% B3% E3% 83% B3% E3% 83% 86% E3% 83% 8A% E6% A7% 8B% E7% AF% 89-% E5% A4% A7% E6% BE% A4-% E6% 96% 87% E5% AD% 9D-ebook / dp / B089VZXX63 / ref = sr_1_1? __Mk_ja_JP =% E3% 82% AB% E3% 82% BF% E3% 82% AB% E3% 83% 8A & dchild = 1 & keywords =% E3% 81% 95% E3% 82% 8F% E3% 81% A3% E3% 81% A6% E5% AD% A6% E3% 81% B6% E3% 82% AF% E3% 83% A9% E3% 82% A6% E3% 83% 89% E3% 82% A4% E3% 83% B3% E3% 83% 95% E3% 83% A9 + Docker +% E5% 9F% BA% E7% A4% 8E% E3% 81% 8B% E3% 82% 89% E3% 81% AE% E3% 82% B3% E3% 83% B3% E3% 83% 86% E3% 83% 8A% E6% A7% 8B% E7% AF% 89 & qid = 1603714817 & sr = 8-1)

Recommended Posts

Docker Compact Manual (4: Erstellen eines benutzerdefinierten Bildes)
Docker Compact Manual (3: Docker-Compose)
Erstellen Sie ein Docker-Image, um eine einfache Java-App auszuführen
Docker Compact-Handbuch (1: Basic / Basic-Befehle)
Erstellen Sie ein Docker-Image mit installiertem Oracle JDK (yum
Erstellen Sie mit Docker eine Vue3-Umgebung!
2. Erstellen Sie ein Docker-Image und registrieren Sie die Registrierung
[Kotlin / Android] Erstellen Sie eine benutzerdefinierte Ansicht
Verwenden Sie Jenkins, um in Docker zu erstellen und dann ein Docker-Image zu erstellen.
Erstellen Sie ein Docker-Image für redoc-cli und registrieren Sie es auf Docker Hub
Erstellen Sie mit Docker schnell eine Webumgebung
So erstellen Sie ein kleines Docker-Image der openjdk 11 (ea) -Anwendung (1 GB → 85 MB)
[Memo] Erstellen Sie mit Docker ganz einfach eine CentOS 8-Umgebung
Erstellen Sie mit Docker sofort eine Privoxy + Tor-Umgebung
Erstellen Sie mit SwiftUI 2.0 eine benutzerdefinierte Registerkartenansicht
[Einführung in Docker] Erstellen Sie ein Docker-Image für maschinelles Lernen und verwenden Sie das Jupyter-Notizbuch
Erstellen Sie eine Docker-Umgebung für Oracle 11g XE
Erstellen Sie mit Docker eine Spring Boot-Entwicklungsumgebung
Ich habe versucht, mit Wercker ein Docker-Image zu erstellen und zu veröffentlichen, mit dem GlassFish 5 gestartet wird
Ich habe ein Docker-Image für die japanische Version von SDAPS erstellt
Bereitstellen von einem lokalen Docker-Image auf Heroku
Erstellen Sie einen Docker-Container, um EPS in eine PGF-Quelle zu konvertieren
[Hinweis] Erstellen Sie mit Docker eine Java-Umgebung von Grund auf neu
Docker Compact Manual (3: Docker-Compose)
Docker Compact-Handbuch (1: Basic / Basic-Befehle)
Docker Compact Manual (4: Erstellen eines benutzerdefinierten Bildes)
Docker-Installation und -Initialisierung
[Java] Erstellen Sie einen Filter
Nicht verwendetes Docker-Image löschen
Vielleicht funktioniert es! Erstellen Sie ein Bild mit Docker und teilen Sie es!
So erstellen Sie ein leichtes Container-Image für Java-Apps
[Persönliche Notizen] So verschieben Sie ein Docker-Image in GitHub-Pakete
Ich habe versucht, mit Docker eine Padrino-Entwicklungsumgebung zu erstellen