[LINUX] Wie erstelle ich eine Docker-Datei?

Einführung

Docker ist eine Technologie, die es einfach macht, eine Umgebung zu erstellen, die von vielen IT-Entwicklungsunternehmen eingeführt wurde. Eine Docker-Datei ähnelt einer DockerImage-Entwurfszeichnung. Sie können ein Docker-Image der Umgebung erstellen, die Sie erstellen möchten, indem Sie selbst eine Docker-Datei erstellen.

Beziehung zwischen Dockerfile, DockerImage und Container

Erstellen Sie in der Reihenfolge Dockerfile => DockerImage => Container.

** So erstellen Sie ein Docker-Image ** Docker-Build in dem Verzeichnis, in dem die Docker-Datei vorhanden ist.

** So erstellen Sie einen Container ** Docker-Lauf (DockerImage-Name oder ID)

Dockerfile-Anweisungen

Verfahren zum Erstellen von Docker-Dateien

FROM Anweisungen zum Bestimmen des Basisbildes. Schreiben Sie es am Anfang der Docker-Datei. Das Betriebssystem wird grundsätzlich nach FROM beschrieben.

FROM OS(Wählen Sie aus dem Docker-Image)

Beispiel)FROM ubuntu:latest
Beispiel)FROM ruby:2.5

RUN Dies ist eine Anweisung zum Ausführen des Befehls, der dem in FROM beschriebenen Betriebssystem entspricht. Für jeden RUN wird eine Ebene erstellt. (Docker Image wird durch Stapeln von Ebenen erstellt.)

Befehle, die RUN OS entsprechen

Beispiel)FROM ubuntu:latest
   RUN touch test
=>Zusätzlich wird im Docker-Image eine Touch-Test-Ebene zur Ubuntu-Ebene erstellt.
(Ich erstelle ein Docker-Image, das eine Datei namens test erstellt.)

Beispiel)FROM ubuntu:latest
   RUN apt-get update && apt-get install -y \
       curl\
       nginx
=>In Docker Image wird zusätzlich in der Ubuntu-Ebene eine Ebene erstellt, auf der zwei Pakete, curl und nginx, installiert werden.
(apt-get update wurde geschrieben, um das zu installierende Paket zu aktualisieren, apt-get install wurde geschrieben, um das Paket zu installieren.)
(-y wird verwendet, um als Ja fortzufahren, wenn während der Installation Ja oder Nein gefragt wird, und Backslashes werden für Zeilenumbrüche verwendet, um das Lesen des Pakets zu erleichtern.)

Da die Docker-Datei erstellt und das DockerImage einmal erstellt wird, wird sie zwischengespeichert, sodass Sie die Erstellungszeit verkürzen können, indem Sie zusätzlich RUN unten und unten schreiben.

CMD Anweisungen zum Angeben des Ausführungsbefehls des Containers. Beschreiben Sie es am Ende der Docker-Datei.

Befehle, die dem CMD-Betriebssystem entsprechen

Beispiel)FROM ubuntu:latest
   RUN apt-get update && apt-get install -y \
       curl\
       nginx
   CMD ["/bin/bash"]
=>Wenn Sie nach dem Erstellen einer Docker-Datei und dem Erstellen eines DockerImage einen Container mit Docker-Ausführung erstellen und ausführen,/bin/Bash wird ausgeführt.

ENTRYPOINT Dies ist eine Anweisung, die eine ähnliche Rolle wie CMD hat.

Mit CMD können Sie Befehle überschreiben, wenn Sie ein Docker-Image ausführen. (Beispiel: Wenn Sie Docker ls ausführen, wird ls zum Zeitpunkt der obigen CMD-Erklärung anstelle von bash im Beispiel ausgeführt.)

Wenn Sie ENTRYPOINT verwenden, können Sie den Befehl nicht überschreiben, und CMD beschreibt die Option ENTRYPOINT.

Befehle, die ENTRYPOINT OS entsprechen

Beispiel)FROM ubuntu:latest
   RUN apt-get update && apt-get install -y \
       curl\
       nginx
   ENTRYPOINT ["ls"]
   CMD ["--help"]
=>Durch Schreiben des Befehls ls in ENTRYPOINT können andere Befehle als der Befehl ls während des Docker-Laufs nicht ausgeführt werden, und CMD ist eine optionale Option.--Hilfe ist angegeben.

COPY Anweisungen zum Kopieren der Dateien in das Verzeichnis mit der Docker-Datei (BuildContext) in das DockerImage.

Dateiname im Build-Kontext kopieren

Beispiel)FROM ubuntu:latest
   RUN mkdir /new_dir
   COPY test /new_dir
   CMD ["/bin/bash"]
=>Wenn Sie eine Docker-Datei erstellen, wird diese zu einem DockerImage/new_Erstellen Sie ein Verzeichnis mit dem Namen dir/new_Eine Ebene, die von einer Datei namens test to dir kopiert werden soll, wird zusätzlich in der Ebene von utubtu erstellt.
Wenn Sie aus diesem Docker-Image einen Container erstellen, befindet sich dieser im Container/new_Ein Verzeichnis namens dir und eine Datei namens test wurden erstellt.

ADD Ähnlich wie der Befehl COPY ist es eine Anweisung, die auch kopiert werden kann.

** Unterschied zwischen HINZUFÜGEN und KOPIEREN ** Wenn ADD eine komprimierte Datei kopiert, wird sie sowohl kopiert als auch dekomprimiert. COPY ist nur eine einfache Kopie. Verwenden Sie ADD beim Kopieren und Dekomprimieren komprimierter Dateien und COPY für einfache Kopien, die sich nicht auf komprimierte Dateien beziehen.

Dateiname im Build-Kontext kopieren

Beispiel)FROM ubuntu:latest
   ADD sample.tar /
   CMD ["/bin/bash"]
=>Beispiel für das Erstellen einer Docker-Datei in DockerImage.Teer/(Direkt unter der Route)Es wird eine Ebene zum Kopieren und Entpacken erstellt.
Probieren Sie beim Erstellen eines Containers direkt unter der Wurzel des Containers.Der Teer wurde entpackt.

ENV Anweisungen zum Festlegen von Umgebungsvariablen.

ENV-Umgebungsvariable

Beispiel)FROM ubuntu:latest
   ENV key1 value
   CMD ["/bin/bash"]
=>Schlüssel1 beim Erstellen eines Containers=Ein Docker-Image mit einer Umgebungsvariablen namens value wird erstellt.

WORKDIR Dies ist eine Anweisung zum Ändern des Ausführungsverzeichnisses der Anweisung.

WORKIDIR-Verzeichnis

Beispiel)FROM ubuntu:latest
   RUN mkdir sample_folder
   WORKDIR /sample_folder
   RUN touch sample_file
=> sample_Erstellen Sie ein Verzeichnis mit dem Namen Ordner und Beispiel_Beispiel im Ordner_Es wird die Ebene sein, die die Datei erstellt.
  (Erstellt in einem Container mit WORKDIR/sample_Sie können RUN im Ordner ausführen.)

Referenz

Udemy

Kameleon Lecturer "Docker-Kurs, der von US-KI-Entwicklern von Grund auf unterrichtet wird"

https://www.udemy.com/share/103aTRAEAdd1pTTHoC/

Es gibt eine Gebühr, aber es war für mich als Anfänger sehr leicht zu verstehen.

Schließlich

Wir hoffen, dass dieser Beitrag Anfängern bei der Überprüfung hilft.

Recommended Posts

Wie erstelle ich eine Docker-Datei?
So erstellen Sie ein Conda-Paket
So erstellen Sie eine virtuelle Brücke
Wie erstelle ich einen Crawler?
So erstellen Sie eine Konfigurationsdatei
So erstellen Sie einen Klon aus Github
So erstellen Sie einen Git-Klonordner
So erstellen Sie ein Repository aus Medien
So erstellen Sie ein Funktionsobjekt aus einer Zeichenfolge
So erstellen Sie eine JSON-Datei in Python
[Hinweis] So erstellen Sie eine Ruby-Entwicklungsumgebung
So erstellen Sie ein 1-zeiliges Kivy-Eingabefeld
Verfahren zur Erstellung plattformübergreifender Apps mit kivy
So erstellen Sie eine Rest-API in Django
[Hinweis] So erstellen Sie eine Mac-Entwicklungsumgebung
So rufen Sie eine Funktion auf
Wie man ein Terminal hackt
Lesen Sie die Python-Markdown-Quelle: So erstellen Sie einen Parser
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
[Go] So erstellen Sie einen benutzerdefinierten Fehler für Sentry
So erstellen Sie ein lokales Repository für Linux
So erstellen Sie ein einfaches TCP-Server / Client-Skript
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
Wie erstelle ich eine japanisch-englische Übersetzung?
So setzen Sie einen symbolischen Link
Wie man einen lockeren Bot macht
Wie erstelle ich einen Crawler?
So erstellen Sie mit snappyHexMesh ein Flussnetz um einen Zylinder
So erstellen Sie eine rekursive Funktion
[Python Kivy] So erstellen Sie ein einfaches Popup-Fenster
[Blender] So erstellen Sie ein Blender-Plug-In
So löschen Sie einen Docker-Container
5 Möglichkeiten zum Erstellen eines Python-Chatbots
Ich möchte vorerst eine Docker-Datei erstellen.
[Python] So erstellen Sie eine Tabelle aus einer Liste (grundlegende Operation zum Erstellen von Tabellen / Ändern des Matrixnamens)
Übersicht über das Erstellen eines Server-Sockets und das Einrichten eines Client-Sockets
So erstellen Sie eine Bezeichnung (Maske) für die Segmentierung mit labelme (semantische Segmentierungsmaske)
[C-Sprache] So erstellen, vermeiden und erstellen Sie einen Zombie-Prozess
Wie erstelle ich eine große Menge an Testdaten in MySQL? ??
So erstellen Sie mit Faker eine CSV-Dummy-Datei mit Japanisch
So schreiben Sie eine Dokumentzeichenfolge, um ein benanntes Tupeldokument mit Sphinx zu erstellen
So erstellen Sie mit AWS Lambda eine serverlose API für maschinelles Lernen
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
So teilen und speichern Sie einen DataFrame
So erstellen Sie eine Sphinx-Übersetzungsumgebung
Qiita (1) Wie schreibe ich einen Codenamen?
So fügen Sie ein Paket mit PyCharm hinzu
[Python] Wie man eine Klasse iterierbar macht
So zeichnen Sie ein Diagramm mit Matplotlib
So erstellen Sie eine * .spec-Datei für pyinstaller.
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
So erstellen Sie eine NVIDIA Docker-Umgebung