Ich denke, dass es viele Leute gibt, die mit Docker vertraut sind und sich auf der Ebene von "Ist es an der Zeit, mit dem Docker-Bildcontainer die Anzahl der Vielfachen zu entwickeln?" Befinden.
Ich bin einer von ihnen, aber selbst wenn ich versuchte, es beim Lesen der Referenz zu verwenden, konnte es nicht gut gehandhabt werden und die Entwicklung wurde verzögert.
Dieses Mal habe ich einen Kommentar zu "Docker-Compose Up" geschrieben, der der grundlegendste von allen ist, und ich bin ziemlich süchtig danach, wenn ich ihn nicht verstehe.
Ich bin auch ein Anfänger, daher würde ich mich freuen, wenn Sie auf Fehler hinweisen könnten.
Nehmen wir dieses Mal zur Erläuterung des Befehls ein einfaches Projekt an, das einen Container startet.
.
├── Dockerfile
├── docker-compose.yml
├── file.txt
└── file2.txt
FROM ubuntu:18.04
WORKDIR work
ADD ./file.txt /work/file.txt
CMD ["ls"]
docker-compose.yml
version: '3.7'
services:
test:
build: .
image: my-alpine-image
container_name: my-apline
Mal sehen, was passiert, wenn wir versuchen, Docker-Compose mit der obigen Konfiguration zu erstellen.
$ docker-compose up
Building test
//Schritt wird weggelassen
Successfully built ff8e7d96a995
Successfully tagged my-alpine-image:latest
WARNING: Image for service test was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating my-apline ... done
Attaching to my-apline
my-apline | file.txt
my-apline exited with code 0
Die folgenden zwei Punkte sind hier wichtig.
Mit anderen Worten, es ist dasselbe wie "Docker Run". Lassen Sie uns das Bild und den Container überprüfen.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d14fde119f0 my-alpine-image "/bin/bash" 10 minutes ago Exited (0) 10 minutes ago my-apline
$ REPOSITORY TAG IMAGE ID CREATED SIZE
my-alpine-image latest ff8e7d96a995 10 minutes ago 64.2MB
Sie können auch sehen, dass die Konsole file.txt enthält, da sie "my-apline | file.txt" druckt.
Dieses Verhalten ändert sich auch dann nicht, wenn es sich um mehrere Container handelt. Daher ** Hier "Ich verstehe, ich verstehe Docker Compose", was danach zu einem Missverständnis führt. ** ** **
Als nächstes ändern wir die Docker-Datei so, dass test2.txt auch im Container enthalten ist.
FROM ubuntu:18.04
WORKDIR work
ADD ./file.txt /work/file.txt
ADD ./file2.txt /work/file2.txt
CMD ["ls"]
Versuchen Sie nun, "Docker-Compose Up" auszuführen. Dann war das Ergebnis wie folgt.
$ docker-compose up
Starting my-apline ... done
Attaching to my-apline
my-apline | file.txt
my-apline exited with code 0
Wie Sie der Ausgabe entnehmen können, enthält der Container (my-apline) keine test2.txt.
Weil diesmal "Docker-Compose Up" ** ist, weil ich gerade den Container gestartet habe, den ich zuvor erstellt habe **.
Als Beweis können wir sehen, dass es keinen Unterschied gibt, wenn der Container und das Bild überprüft werden.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d14fde119f0 my-alpine-image "/bin/bash" 10 minutes ago Exited (0) 10 minutes ago my-apline
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-alpine-image latest ff8e7d96a995 10 minutes ago 64.2MB
Wie erhält man einen Container mit dem neuesten Image, einschließlich test2.txt? ** ** **
Die richtige Antwort ist die Verwendung der Option "--build", die ausdrücklich angibt, dass Sie "erneut erstellen" möchten.
$ docker-compose up --build
Building test
//Schritt wird weggelassen
Successfully built 7218cdd4f17a
Successfully tagged my-alpine-image:latest
Recreating my-apline ... done
Attaching to my-apline
my-apline | file.txt
my-apline | file2.txt
my-apline exited with code 0
Sie können sehen, dass sowohl das Bild als auch der Container neu sind.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
28c26826bf20 my-alpine-image "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago my-apline
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-alpine-image latest 7218cdd4f17a About a minute ago 64.2MB
Zusammenfassend lautet der Befehl docker-compose up
Ich habe herausgefunden, dass.
Übrigens, wenn Sie Docker-Compose ohne Image erstellen, sehen Sie die Konsole.
Image for service test was built because it did not already exist. To rebuild this image you must use
docker-compose build
ordocker-compose up --build
. (Es wurde erstellt, weil das Image für Servicetests nicht vorhanden war. Sie müssen "Docker-Compose Build" oder "Docker-Compose Up - Build" verwenden, um dieses Image neu zu erstellen.)
Ich bemerkte, dass es aus war. Wenn Sie Englisch richtig lesen, müssen Sie sich nicht so sehr verlaufen.
Ich hoffe, es ist hilfreich für Leute, die an ähnlichen Orten gestolpert sind!
Recommended Posts