Docker
Connexion des conteneurs
Recherche…
Paramètres
Paramètre | Détails |
---|---|
tty:true | Dans docker-compose.yml, le drapeau tty: true maintient la commande sh du conteneur en attente de saisie. |
Remarques
Les pilotes du réseau host
et du bridge
peuvent connecter des conteneurs sur un seul hôte de docker. Pour permettre aux conteneurs de communiquer au-delà d'une machine, créez un réseau superposé. Les étapes pour créer le réseau dépendent de la gestion de vos hôtes Docker.
- Mode Swarm: le
docker network create --driver overlay
- docker / swarm : nécessite un magasin clé-valeur externe
Réseau Docker
Les conteneurs du même réseau Docker ont accès aux ports exposés.
docker network create sample
docker run --net sample --name keys consul agent -server -client=0.0.0.0 -bootstrap
Dockerfile du consul expose 8500
, 8600
et plusieurs autres ports. Pour démontrer, exécutez un autre conteneur sur le même réseau:
docker run --net sample -ti alpine sh
/ # wget -qO- keys:8500/v1/catalog/nodes
Ici, le conteneur consul est résolu à partir des keys
, le nom donné dans la première commande. Docker fournit une résolution DNS sur ce réseau, pour rechercher des conteneurs par leur --name
.
Docker-compose
Les réseaux peuvent être spécifiés dans un fichier de composition (v2). Par défaut, tous les conteneurs sont dans un réseau partagé.
Commencez avec ce fichier: example/docker-compose.yml
:
version: '2'
services:
keys:
image: consul
command: agent -server -client=0.0.0.0 -bootstrap
test:
image: alpine
tty: true
command: sh
Démarrer cette pile avec docker-compose up -d
créera un réseau nommé d'après le répertoire parent, dans ce cas example_default
. Vérifier avec le docker network ls
> docker network ls
NETWORK ID NAME DRIVER SCOPE
719eafa8690b example_default bridge local
Connectez-vous au conteneur alpin pour vérifier que les conteneurs peuvent se résoudre et communiquer:
> docker exec -ti example_test_1 sh
/ # nslookup keys
...
/ # wget -qO- keys:8500/v1/kv/?recurse
...
Un fichier de composition peut avoir une section networks:
top level pour spécifier le nom du réseau, le pilote et d'autres options à partir de la commande docker network .
Liaison de conteneur
L'argument docker --link
et le link:
sections docker-compose --link
alias sur d'autres conteneurs.
docker network create sample
docker run -d --net sample --name redis redis
Avec link, le nom d'origine ou le mappage résoudra le conteneur redis.
> docker run --net sample --link redis:cache -ti python:alpine sh -c "pip install redis && python"
>>> import redis
>>> r = redis.StrictRedis(host='cache')
>>> r.set('key', 'value')
True
Avant docker 1.10.0
, la liaison de conteneur permet également de configurer la connectivité réseau - comportement désormais fourni par le réseau Docker. Les liens dans les versions ultérieures fournissent uniquement un effet legacy
sur le réseau de pont par défaut.