Docker
Anslut behållare
Sök…
parametrar
Parameter | detaljer |
---|---|
tty:true | I docker-compose.yml håller tty: true flaggan behållarens sh kommando igång och väntar på inmatning. |
Anmärkningar
De host
och bridge
nätverksdrivrutiner kan ansluta containrar på en enda hamnarbetare värd. Skapa ett överläggsnätverk för att tillåta behållare att kommunicera bortom en maskin. Steg för att skapa nätverket beror på hur dina dockningsvärdar hanteras.
Docker-nätverk
Behållare i samma dockningsnätverk har åtkomst till exponerade portar.
docker network create sample
docker run --net sample --name keys consul agent -server -client=0.0.0.0 -bootstrap
Consul's Dockerfile exponerar 8500
, 8600
och flera fler hamnar. För att demonstrera, kör en annan behållare i samma nätverk:
docker run --net sample -ti alpine sh
/ # wget -qO- keys:8500/v1/catalog/nodes
Här löses konsulbehållaren från keys
, namnet som ges i det första kommandot. Docker tillhandahåller dns-upplösning på detta nätverk för att hitta containrar efter deras --name
.
Docker-compose
Nätverk kan anges i en kompositionsfil (v2). Som standard finns alla behållare i ett delat nätverk.
Börja med den här filen: 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
docker-compose up -d
denna stack med docker-compose up -d
skapas ett nätverk uppkallad efter moderkatalogen, i detta fall example_default
. Kontrollera med docker network ls
> docker network ls
NETWORK ID NAME DRIVER SCOPE
719eafa8690b example_default bridge local
Anslut till den alpina behållaren för att verifiera att behållarna kan lösa och kommunicera:
> docker exec -ti example_test_1 sh
/ # nslookup keys
...
/ # wget -qO- keys:8500/v1/kv/?recurse
...
En kompositionsfil kan ha ett networks:
toppnivåavsnitt för att ange nätverksnamn, drivrutin och andra alternativ från dockningsnätverkskommandot .
Länk till behållare
Dokumentet för --link
link:
och link:
sektioner docker-compose gör alias till andra containrar.
docker network create sample
docker run -d --net sample --name redis redis
Med länken löser antingen det ursprungliga namnet eller kartläggningen redis-behållaren igen.
> 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
Innan docker 1.10.0
behållarlänkning konfigurerar också nätverksanslutning - beteende som nu tillhandahålls av docker-nätverk. Länkar i senare versioner ger endast legacy
effekt på standardbronätverket.