Docker
Collegamento di contenitori
Ricerca…
Parametri
Parametro | Dettagli |
---|---|
tty:true | In docker-compose.yml, la bandiera tty: true mantiene attivo il comando sh del contenitore in attesa di input. |
Osservazioni
I driver di rete host
e bridge
sono in grado di connettere i contenitori su un singolo host di docker. Per consentire ai contenitori di comunicare oltre una macchina, creare una rete di sovrapposizione. I passaggi per creare la rete dipendono da come vengono gestiti gli host della docker.
Docker network
I contenitori nella stessa rete mobile hanno accesso alle porte esposte.
docker network create sample
docker run --net sample --name keys consul agent -server -client=0.0.0.0 -bootstrap
Il Dockerfile di Console espone 8500
, 8600
e molte altre porte. Per dimostrare, esegui un altro contenitore nella stessa rete:
docker run --net sample -ti alpine sh
/ # wget -qO- keys:8500/v1/catalog/nodes
Qui il contenitore del console è risolto da keys
, il nome dato nel primo comando. Docker fornisce la risoluzione DNS su questa rete, per trovare i contenitori con il loro --name
.
Docker-composizione
Le reti possono essere specificate in un file di composizione (v2). Per impostazione predefinita tutti i contenitori si trovano in una rete condivisa.
Inizia con questo file: 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
L'avvio di questo stack con docker-compose up -d
creerà una rete che prende il nome dalla directory padre, in questo caso example_default
. Controllare con la docker network ls
> docker network ls
NETWORK ID NAME DRIVER SCOPE
719eafa8690b example_default bridge local
Connettiti al contenitore alpino per verificare che i contenitori possano risolvere e comunicare:
> docker exec -ti example_test_1 sh
/ # nslookup keys
...
/ # wget -qO- keys:8500/v1/kv/?recurse
...
Un file di composizione può avere una networks:
sezione di livello superiore per specificare il nome della rete, il driver e altre opzioni dal comando di rete della finestra mobile .
Collegamento di container
L'argomento link:
--link
e il link:
sezioni docker-compose creano alias in altri contenitori.
docker network create sample
docker run -d --net sample --name redis redis
Con il collegamento, il nome originale o la mappatura risolverà il contenitore 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
Prima di collegare il 1.10.0
contenitore 1.10.0
anche la connettività di rete - comportamento ora fornito dalla rete mobile. I collegamenti nelle versioni successive forniscono solo un effetto legacy
sulla rete bridge predefinita.