La liaison entre les conteneurs dans un fichier docker-compose version 2 ne fonctionne pas.
Ce n'est qu'en utilisant le format 'ancien' version 1 que je vois le lien dans/etc/hosts du conteneur.
J'ai le fichier suivant docker-compose.yml de la version de base 2.
version: '2' .________. services: my-app: image: Tomcat: 8.0 Nom du conteneur: my-app1 liens: - my-redis my-redis: image: redis nom_cipient: my-redis1
Quand j'exécute la commande suivante:
docker-compose up -d
Je vois que deux conteneurs sont démarrés, mais aucun lien n'est créé dans le fichier/etc/hosts:
docker exec -it mon-app1 cat/etc/hosts
127.0.0.1 localhost :: 1 localhost ip6-localhost ip6-loopback fe00 :: 0 ip6-localnet ff00 :: 0 ip6-mcastprefix ff02 :: 1 ip6-allnodes ff02 :: 2 ip6-allrouters 172.18.0.3 2abb84ccada9
Depuis "my-app1", je peux envoyer une requête ping à l'autre conteneur en utilisant l'adresse IP de "my-redis1", mais je ne peux pas "cingler mon-redis1" (en fonction d'un nom).
Quel pourrait être le problème ici?
Information additionnelle:
Le problème est le pare-feu de mon hôte Fedora.
Avec le pare-feu temporairement désactivé ('systemctl stop firewalld', suivi de 'systemctl restart docker'), tout fonctionne conformément à la documentation de ce dernier.
Firewalld semble présenter un problème majeur lorsqu'il est utilisé avec docker, voir: https://github.com/docker/docker/issues/16137 .
Notez que RHEL/Centos 7 utilise également firewalld.
-Arjen
Avec la version 2 de docker-compose, les «services» (conteneurs) du même réseau sont liés entre eux par défaut.
Utilisation du fichier ci-dessous docker-compose.yml
version: '2'
services:
my-app:
image: Tomcat:8.0
container_name: my-app1
links:
- my-redis
my-redis:
image: redis
container_name: my-redis1
Vous pouvez simplement exécuter ping my-app
à partir de votre conteneur my-redis
et ping my-redis
à partir de votre conteneur my-app
pour vérifier qu'ils sont liés.
Par exemple:
$ docker-compose up -d
$ docker exec -it my-app1 bash
# ping my-redis
Vous pouvez obtenir plus d'informations à ce sujet dans les liens ci-dessous: https://blog.docker.com/2016/02/compose-1-6/https: // github. com/docker/composer/blob/master/docs/networking.md
Dans mon cas, le problème était dans le nom du service.
version: "2"
services:
my_auth_server:
build: auth-server
ports:
- "8082:8082"
my_api:
build: core-api
ports:
- "8081:8081"
links:
- my_auth_server:auth-server # <-- here changed from auth_server to auth-server