Je pense qu'il y a beaucoup de gens qui connaissent Docker et qui sont au niveau de "Est-il temps de développer en utilisant le conteneur d'image Docker du nombre de multiples?"
J'en fais partie, mais même si j'essayais de l'utiliser en lisant la référence, cela ne pouvait pas être bien géré et le développement a été retardé.
Cette fois, j'ai écrit un commentaire sur docker-compose up
, qui est le plus basique de tous, et j'y suis assez accro si je ne le comprends pas.
Je suis aussi un débutant, donc j'apprécierais que vous signaliez des erreurs.
Cette fois, dans le but d'expliquer la commande, supposons un projet simple qui démarre un conteneur.
.
├── 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
Voyons ce qui se passe lorsque nous essayons docker-compose up
avec la configuration ci-dessus.
$ docker-compose up
Building test
//L'étape est omise
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
Les deux points suivants sont importants ici.
my-alpine-image
my-alpine
En d'autres termes, c'est la même chose que «docker run». Vérifions en fait l'image et le conteneur.
$ 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
Vous pouvez également voir que la console contient file.txt, car elle imprime my-apline | file.txt
.
Ce comportement ne change pas même s'il s'agit d'un conteneur multiple. Par conséquent, ** Ici, "Je vois, je comprends Docker Compose", ce qui conduit à un malentendu après cela. ** **
Ensuite, modifions le Dockerfile afin que test2.txt soit également inclus dans le conteneur.
FROM ubuntu:18.04
WORKDIR work
ADD ./file.txt /work/file.txt
ADD ./file2.txt /work/file2.txt
CMD ["ls"]
Maintenant, essayez d'exécuter docker-compose up
. Ensuite, le résultat était le suivant.
$ docker-compose up
Starting my-apline ... done
Attaching to my-apline
my-apline | file.txt
my-apline exited with code 0
Comme vous pouvez le voir dans la sortie, le conteneur (my-apline) ne contient pas test2.txt.
Parce que cette fois, docker-compose up
est ** parce que je viens de démarrer le conteneur que j'ai créé précédemment **.
Pour preuve, nous pouvons voir qu'il n'y a pas de différence lors de la vérification du conteneur et de l'image.
$ 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
Alors, comment obtenir un conteneur avec la dernière image, y compris test2.txt? ** **
La bonne réponse est d'utiliser l'option --build
, qui indique explicitement que vous voulez" reconstruire ".
$ docker-compose up --build
Building test
//L'étape est omise
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
Vous pouvez voir que l'image et le conteneur sont nouveaux.
$ 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
En résumé, la commande docker-compose up
est
J'ai découvert que.
Au fait, si vous docker-compose up
sans image, vous verrez la console.
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
. (Il a été construit parce que l'image de test de service n'existait pas. Vous devez utiliserdocker-compose build
oudocker-compose up --build
pour reconstruire cette image.)
J'ai remarqué que c'était fini. Si vous lisez correctement l'anglais, vous n'avez pas à vous perdre autant.
J'espère que cela sera utile pour les personnes qui ont trébuché dans des endroits similaires!
Recommended Posts