Selon le Docker Compose la documentation Compose-file :
depends_on
- Dépendance express entre services.links
- Lien vers des conteneurs dans un autre service et exprime également la dépendance entre les services de la même manière que depend_on .
Je ne comprends pas le but de la liaison à d'autres conteneurs, donc la différence entre deux options me semble encore assez difficile.
Ce serait beaucoup plus facile s'il y a un exemple, mais je n'en trouve pas.
J'ai remarqué que lorsque je relie le conteneur B au conteneur A, le conteneur B sera "exécutable" à l'intérieur de la coque du conteneur A.
J'ai couru à l' ping B
intérieur du conteneur A bash
et j'ai obtenu un résultat comme celui-ci (juste pour référence, image provenant d'Internet)
docker
docker-compose
dockerfile
itsjef
la source
la source
--link
indicateur est désormais une fonctionnalité héritée obsolète de Docker et la documentation suggère "Il peut éventuellement être supprimé" Docker: Liens de conteneur hérités . Il est conseillé de ne pas utiliser la fonction de réseaux Docker ou la méthode de composition Docker . Je pensais que cela serait utile à quiconque ici se renseignerait sur cette fonctionnalité.Réponses:
La publication a besoin d'une mise à jour après que l'
links
option est obsolète.Fondamentalement, il
links
n'est plus nécessaire car son objectif principal, rendre le conteneur accessible par un autre en ajoutant une variable d'environnement, est inclus implicitement avecnetwork
. Lorsque les conteneurs sont placés dans le même réseau, ils sont accessibles les uns aux autres en utilisant leur nom de conteneur et un autre alias comme hôte.Pour
docker run
,--link
est également déconseillé et doit être remplacé par un réseau personnalisé.depends_on
exprime l'ordre de départ (et implicitement l'image de tirage), ce qui était un bon effet secondaire delinks
.la source
Cette réponse est pour la version 2 de docker-compose et elle fonctionne également sur la version 3
Vous pouvez toujours accéder aux données lorsque vous utilisez depend_on.
Si vous regardez les documents Docker Docker Compose et Django , vous pouvez toujours accéder à la base de données comme ceci:
Quelle est la différence entre les liens et depend_on?
liens:
Lorsque vous créez un conteneur pour une base de données, par exemple:
Et vous trouverez peut-être
Cela signifie que vous pouvez connecter la base de données à partir de votre port localhost 32777 (3306 dans le conteneur), mais ce port change à chaque redémarrage ou suppression du conteneur. Vous pouvez donc utiliser des liens pour vous assurer de toujours vous connecter à la base de données et ne pas avoir à savoir de quel port il s'agit.
dépend de:
J'ai trouvé un joli blog de Giorgio Ferraris Docker-compose.yml: de V1 à V2
Et
Mettre à jour
dépend de
Dépendance express entre services, ce qui a deux effets:
docker-compose up
démarrera les services dans l'ordre de dépendance. Dans l'exemple suivant, db et redis seront démarrés avant Web.docker-compose up SERVICE
inclura automatiquement les dépendances de SERVICE. Dans l'exemple suivant, docker-compose up web créera et démarrera également db et redis.Exemple simple:
la source
https://docs.docker.com/compose/compose-file/compose-versioning/
docker run
ici est complètement hors de propos, ce n'est pas de cette façon que le conteneur sera exécuté de toute façon. Qu'est-ce que je rate?docker run
exemple veut montrer pourquoi nous devons utiliser depend_on ou links au lieu de coder en dur un numéro de port.juste parce que si vous ne le spécifiez pas, il change à chaque fois. Je pense que cela permettra aux gens de mieux comprendre le depend_on ou les liens.[Mise à jour septembre 2016]: Cette réponse était destinée au fichier de composition Docker v1 (comme illustré par l'exemple de fichier de composition ci-dessous). Pour la v2, voir l'autre réponse de @Windsooon.
[Réponse originale]:
C'est assez clair dans la documentation.
depends_on
décide de la dépendance et de l'ordre de création des conteneurs etlinks
non seulement ceux-ci, mais aussiPar exemple, en supposant le
docker-compose.yml
fichier suivant :Avec
links
, le code à l'intérieurweb
pourra accéder à la base de données en utilisantdb:5432
, en supposant que le port 5432 est exposé dans l'db
image. Si ellesdepends_on
étaient utilisées, cela ne serait pas possible, mais l'ordre de démarrage des conteneurs serait correct.la source
links
ou l'undepends_on
ou l'autre est ok? Mesdocker-compose.yml
utilisationsdepends_on
et choses actuelles semblent bien fonctionner. :)name:port
puisdepends_on
est ok.db
dans leweb
nom d'hôte des bases de données.