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.