Docker build-Befehl mit mehreren Argumenten
Mit dem Befehl docker build
können wir Docker-Images aus einer Docker-Datei erstellen. Es ermöglicht uns auch, ein Bild aus einem Kontext zu erstellen, der sich auf eine Reihe von Dateien bezieht, die sich an einem Ort befinden, der durch einen PATH oder eine URL angegeben ist.
Andererseits ist ein Dockerfile einfach ein schreibgeschütztes Textdokument mit Anweisungen, die beim Zusammenbau unseres Docker-Images aufgerufen werden. Ein Docker-Image ist ein Befehlssatz, Anwendungscode, Abhängigkeiten, Tools und Bibliotheken, die wir zum Erstellen eines Docker-Containers verwenden.
Dieses Tutorial zeigt, wie Sie den Befehl docker build
und mehrere Argumente verwenden.
der Befehl docker build
mit mehreren Argumenten
Der Befehl docker build
wird normalerweise im Terminal oder in der Kommandozeile ausgeführt.
Syntax:
docker build [options] <directory path or URL>
Der PATH oder die URL bezieht sich auf eine Reihe von Dateien in einem Kontext, der Ressourcen wie vorgefertigten Tarball-Kontext, reine Textdateien oder sogar ein Git-Repository enthalten kann. Wenn alle Dateien im lokalen Verzeichnis gespeichert sind, also im selben Verzeichnis wie das Dockerfile, können wir optional .
verwenden. als Weg.
Dieser Pfad gibt die Dateien an, die für den Build-Kontext auf dem Docker-Daemon verwendet werden.
docker build .
Wir können mehrere Argumente während der Erstellungszeit unter dem Optionsparameter übergeben. Mit dem –build-arg
-Tag können wir Werte festlegen, die Benutzer zur Build-Zeit festlegen können.
Wir müssen jedoch zuerst eine ARG
-Anweisung in unserem Dockerfile definieren, bevor wir das --build-arg
-Tag verwenden, um das Image zu erstellen. Wir können auf diese Build-Time-Variable wie auf normale Umgebungsvariablen zugreifen; Sie bleiben jedoch nach dem Erstellen des Abbilds nicht bestehen.
Obwohl der Umfang der ARG-Anweisungen begrenzt ist, kann er deklariert werden, bevor das Basisbild angegeben wird. Wir können auch mehrere Build-Argumente übergeben, indem wir jedes Argument separat mit einem separaten --build-arg
-Tag übergeben.
Syntax:
docker build -t <image-name>:<tag> --build-arg <key1>=<value1> --build-arg <key2>=<value2> .
Wir haben ein einfaches Dockerfile, das im folgenden Beispiel einige ARG
-Werte definiert. In diesem Fall haben wir ihre Standardwerte nicht festgelegt.
Die Docker-Datei sieht wie unten gezeigt aus.
# base image
FROM python
ARG language
ARG name
# Set your working directory
WORKDIR /var/www/
# Copy the necessary files
COPY ./app.py /var/www/app.py
# Install the necessary packages
RUN pip install -r /var/www/requirements.txt
RUN echo "Hello $language Developer"
MAINTAINER Isaac Tonyloi
Daher wird von uns erwartet, dass wir die Werte beim Erstellen des Images mit den Tags -build-arg
übergeben.
~/my-app$ docker build --build-arg language=Java .
Beim Erstellen eines Images mit dem obigen Befehl wird die Nachricht Hello Java Developer
zusammen mit anderen Dateien gedruckt, wie unten gezeigt.
0.0s
=> [5/6] RUN pip install -r /var/www/requirements.txt 100.4s
=> [6/6] RUN echo "Hello Java Developer" 4.4s
=> exporting to image 3.8s
=> => exporting layers 2.8s
=> => writing image sha256:22fa358b711d2ea3a1d72e59f062f6c7c38b414bdb253fb8d0def20222cadd93
Wir können docker build
auch mit mehreren Befehlen verwenden, indem wir mehrere --build-arg
-Tags verwenden.
/my-app$ docker build \
> --build-arg language=Java \
> --build-arg name=Tonyloi \
> .
Dadurch wird die Nachricht darunter und neben anderen Nachrichten gedruckt. Obwohl dies sehr einfach ist, können Sie auf diese Weise mehrere Befehle übergeben, wenn Sie ein Docker-Image aus einer Docker-Datei erstellen.
Ausgabe:
=> [2/2] RUN echo "Hello Java Developer and my name is Tonyloi" 3.3s
=> exporting to image 3.0s
=> => exporting layers 2.0s
=> => writing image sha256:d4d7c3b18aa9422be2990f5381a5423a18867dda8090dd4a4f166efc4e7c4ba2
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn