web-dev-qa-db-fra.com

Différence entre service et conteneur dans docker compose

Je traversais volumes_from option dans docker compose. Apparemment, vous pouvez importer un volume à partir d'un conteneur ou d'un service. De la documentation de docker compose, il s'agit de:

volumes_from

Montez tous les volumes à partir d'un autre service ou conteneur, en spécifiant éventuellement un accès en lecture seule (ro) ou en lecture-écriture (rw).

volumes_from:
 - service_name
 - service_name:ro
 - container:container_name
 - container:container_name:rw

Remarque: Les formats conteneur: ... ne sont pris en charge que dans le format de fichier version 2. Dans la version 1, vous pouvez utiliser des noms de conteneurs sans les marquer comme tels:

- service_name
- service_name:ro
- container_name
- container_name:rw

Je suis confus ici quelle est la différence entre les conteneurs et les services ici?

31

Les services et les conteneurs sont liés, mais les deux sont des choses différentes.

Un service peut être exécuté par un ou plusieurs conteneurs. Avec docker vous pouvez gérer des conteneurs et avec docker-compose vous pouvez gérer les services.

Par exemple:

Disons que nous avons ce docker-compose.yml fichier:

web:
  image: example/my_web_app:latest
  expose:
    - 80
  links:
    - db 

db:
  image: postgres:latest

Ce fichier de composition définit deux services, web et db.

Lorsque vous exécutez docker-compose up, En supposant que le répertoire du projet est test1 puis compose démarrera 2 conteneurs nommés myapp_db_1 et myapp_web_1.

$ docker ps -a
CONTAINER ID   IMAGE        COMMAND          ...      NAMES
1c1683e871dc   test1_web    "nginx -g"       ...      test1_web_1
a41360558f96   test1_db     "postgres -d"    ...      test1_db_1

Donc, à ce stade, vous avez 2 services et 1 conteneur pour chacun.

Mais vous pouvez faire évoluer le service nommé web pour utiliser 5 conteneurs.

$ docker-compose scale web=5
Creating and starting 2 ... done
Creating and starting 3 ... done
Creating and starting 4 ... done
Creating and starting 5 ... done

Dans ce point, vous avez 2 services et 6 conteneurs

$ docker ps -a  
CONTAINER ID   IMAGE        COMMAND         ...      NAMES
1bf4c939263f   test1_web    "nginx -g"      ...      test1_web_3
d3033964a44b   test1_web    "nginx -g"      ...      test1_web_4
649bbda4d0b0   test1_web    "nginx -g"      ...      test1_web_5
a265ea406727   test1_web    "nginx -g"      ...      test1_web_2
1c1683e871dc   test1_web    "nginx -g"      ...      test1_web_1
a41360558f96   test1_db     "postgres -d'   ...      test1_db_1

De plus, avec docker-compose, vous pouvez exécuter la sous-commande sur un ou plusieurs services.

$docker-compose stop web
50
Hemerson Varela

je ne peux pas répondre entièrement à votre question car je ne comprends pas moi-même les services. Cependant, je comprends les volumes_from par rapport aux conteneurs et donc cela répondra à la moitié de votre question :) Une réponse partielle est meilleure que rien?

CONTENEUR A

volumes: /my/shared/directory
container_name:ca

CONTENEUR B

volumes_from:ca

Maintenant, le conteneur B aura un nouveau répertoire dans mon répertoire/my/shared/qui est monté à partir du conteneur A - le contenu du répertoire dans le conteneur B sera exactement le même que le contenu du répertoire dans le conteneur A

si vous découvrez les services plz faites le moi savoir

2
danday74