Je mets en place mon environnement de développement local avec des conteneurs docker. Le docker-compose.yml est comme suit
version: '2'
services:
db:
image: mongo:3
mq:
image: rabbitmq:3
api:
build: .
image: my_app/api
ports:
- "3000:3000"
links:
- db
- mq
environment:
- NODE_ENV=development
Cela démarre sans erreur. Et docker répertorie 3 conteneurs en cours d'exécution
docker-compose up -d
docker ps
e90e5a8b5d33 my_app/api "/usr/local/bin/node " 0.0.0.0:3000->3000/tcp my_app_api_1
42bfcd971b16 mongo:3 "/entrypoint.sh mongo" 27017/tcp my_app_db_1
a0685a816c47 rabbitmq:3 "/docker-entrypoint.s" 4369/tcp, 5671-5672/tcp, 25672/tcp my_app_mq_1
Cependant, lorsque j'essaie de créer un lien vers ces conteneurs en cours d'exécution à partir d'un autre conteneur
docker run --link my_app_mq_1:mq --link my_app_db_1:db -it worker
Je reçois une erreur
docker: Error response from daemon: Cannot link to /my_app_mq_1, as it does not belong to the default network.
J'ai aussi essayé
docker run --link my_app_mq_1:mq --link my_app_db_1:db -it --net default worker
Même erreur.
Alors, comment puis-je créer un lien vers un conteneur en cours d'exécution démarré par docker-compose?
la source
--net
avant la commande. J'ai rencontré ce problème en essayant d'exécuter l'image docker redis officielle.ma commande pour exécuter des liens
la source
Lorsque vous utilisez la définition de service version 2 et plus,
docker-compose
crée un réseau défini par l'utilisateur. La résolution de noms dans un réseau défini par l'utilisateur fonctionne via le serveur DNS intégré Docker. Voici une citation associée de la documentation :Les conteneurs sont également disponibles par les alias de réseau qui
docker-compose
créent. Il peut être vérifié par commande comme:Il imprime
["db","$CONTAINER_ID"]
.Fournir des liens avec
--link
n'aura aucun effet dans le cas d'un réseau existant défini par l'utilisateur. Vous pouvez vous assurer et regarder/etc/hosts
, qui n'aura pas les lignes correspondantes.Ainsi, la commande suivante suffit:
la source