Ich verwende docker-compose
, um eine Testumgebung auszuführen, die aus ungefähr 5 verschiedenen Containern besteht. Die Intercontainer-Links und die gemeinsam genutzten Volumes (Volumes von) funktionieren wunderbar. Ich lege auch einige Ports für den Host-Computer frei, was gut funktioniert.
Was mir fehlt, ist eine Möglichkeit, einige meiner realen Server mit dieser Umgebung zu verbinden, ohne die IP-Adresse fest zu codieren. Mit docker run
können Sie --add-host
eine weitere Zeile in Ihre /etc/hosts
Datei einfügen. Gibt es eine Möglichkeit, mit Docker-Compose etwas Ähnliches zu tun?
docker
hosts
docker-compose
Pieter
quelle
quelle
https://docs.docker.com/compose/compose-file/#extra_hosts
quelle
Basic
docker-compose.yml
mit zusätzlichen Hosts:version: '3' services: api: build: . ports: - "5003:5003" extra_hosts: - "your-host.name.com:162.242.195.82" #host and ip - "your-host--1.name.com your-host--2.name.com:50.31.209.229" #multiple hostnames with same ip
Der Inhalt der
/etc/hosts
Datei im erstellten Container:Sie können die
/etc/hosts
Datei mit den folgenden Befehlen überprüfen :quelle
Es scheint möglich zu sein, zu sagen:
extra_hosts: - "loghost:localhost"
Wenn also der Teil nach dem Doppelpunkt (normalerweise eine IP-Adresse) nicht mit einer Ziffer beginnt, wird eine Namensauflösung durchgeführt, um eine IP für localhost zu suchen und dem / etc / hosts des Containers Folgendes hinzuzufügen:
127.0.0.1 loghost
... unter der Annahme, dass localhost auf dem Hostsystem in 127.0.0.1 aufgelöst wird.
Es sieht so aus, als wäre es wirklich einfach, den Quellcode von docker-compose hinzuzufügen: Die Funktion parse_extra_hosts von compose / config / types.py würde dies wahrscheinlich tun.
Für Docker selbst könnte dies wahrscheinlich in der ValidateExtraHost-Funktion von opts / hosts.go hinzugefügt werden, obwohl es dann nicht mehr streng validiert wird, sodass die Funktion ein wenig falsch benannt wäre.
Es könnte tatsächlich etwas besser sein, dies Docker hinzuzufügen, nicht Docker-Compose - Docker-Compose erhält es möglicherweise nur automatisch, wenn Docker es erhält.
Leider würde dies wahrscheinlich einen Container-Bounce erfordern, um eine IP-Adresse zu ändern.
quelle
Dies befindet sich im Feature-Backlog für Compose, aber es sieht nicht so aus, als ob die Arbeit noch nicht begonnen hat. Github-Problem.
quelle