Docker
Behälter verbinden
Suche…
Parameter
Parameter | Einzelheiten |
---|---|
tty:true | In docker-compose.yml sorgt das Flag tty: true dafür, dass der Befehl sh des Containers auf Eingabe wartet. |
Bemerkungen
Die host
und bridge
Netzwerktreiber können Container auf einem einzigen Docker-Host verbinden. Erstellen Sie ein Overlay-Netzwerk, damit Container über eine Maschine kommunizieren können. Die Schritte zum Erstellen des Netzwerks hängen davon ab, wie Ihre Docker-Hosts verwaltet werden.
Docker-Netzwerk
Container im selben Docker-Netzwerk haben Zugriff auf freiliegende Ports.
docker network create sample
docker run --net sample --name keys consul agent -server -client=0.0.0.0 -bootstrap
Die Dockerfile von Consul stellt 8500
, 8600
und mehrere weitere Ports bereit . Führen Sie zur Demonstration einen anderen Container in demselben Netzwerk aus:
docker run --net sample -ti alpine sh
/ # wget -qO- keys:8500/v1/catalog/nodes
Hier wird der Konsul-Container aus keys
aufgelöst, der Name wird im ersten Befehl angegeben. Docker bietet DNS-Auflösung in diesem Netzwerk, um Container anhand ihres --name
zu finden.
Docker komponieren
Netzwerke können in einer Erstellungsdatei (Version 2) angegeben werden. Standardmäßig befinden sich alle Container in einem gemeinsam genutzten Netzwerk.
Beginnen Sie mit dieser Datei: 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
Wenn Sie diesen Stack mit docker-compose up -d
example_default
wird ein Netzwerk erstellt, das nach dem übergeordneten Verzeichnis benannt wird, in diesem Fall example_default
. Überprüfen Sie mit dem docker network ls
> docker network ls
NETWORK ID NAME DRIVER SCOPE
719eafa8690b example_default bridge local
Stellen Sie eine Verbindung zum Alpencontainer her, um zu überprüfen, ob die Container aufgelöst werden können und kommunizieren können:
> docker exec -ti example_test_1 sh
/ # nslookup keys
...
/ # wget -qO- keys:8500/v1/kv/?recurse
...
Eine Erstellungsdatei kann über networks:
verfügen networks:
oberster Abschnitt, um den Netzwerknamen, den Treiber und andere Optionen des Docker-Netzwerkbefehls anzugeben.
Containerverknüpfung
Der Docker --link
Argument und link:
Abschnitte Docker-compose machen Aliase andere Behälter.
docker network create sample
docker run -d --net sample --name redis redis
Bei Verknüpfung löst entweder der ursprüngliche Name oder das Mapping den Redis-Container auf.
> 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
Vor der Docker 1.10.0
Containerverbindung 1.10.0
auch die Netzwerkkonnektivität ein - Verhalten, das jetzt vom Docker-Netzwerk bereitgestellt wird. Links in späteren Versionen bieten nur legacy
- Effekt auf dem Standard - Brücke Netzwerk.