Sur Mac et Windows, il est possible d'utiliser docker.for.mac.Host.internal
(remplace docker.for.mac.localhost
) et docker.for.win.Host.internal
(remplace docker.for.win.localhost
)Host.docker.internal
(Docker 18.03+) à l'intérieur du conteneur.
Existe-t-il une solution pour Linux qui fonctionne immédiatement sans passer de variables env ou extraire à l’aide de diverses commandes cli.
Cela dépend de ce que vous essayez de faire. Si vous courez avec --net=Host
, localhost
devrait fonctionner correctement. Si vous utilisez un réseau par défaut, utilisez l'adresse IP statique 172.17.0.1
. Je pense que ni l'un ni l'autre ne se comportera de la même manière que ces domaines.
Une solution consiste à utiliser un conteneur spécial qui redirige le trafic vers l'hôte. Vous pouvez trouver un tel conteneur ici: https://github.com/qoomon/docker-Host . L'idée est de récupérer la route par défaut dans le conteneur et de l'installer en tant que passerelle NAT pour les connexions entrantes).
Ci-dessous un exemple d'utilisation imaginaire:
docker-Host:
image: qoomon/docker-Host
cap_add: [ 'NET_ADMIN', 'NET_RAW' ]
restart: on-failure
environment:
- PORTS=999
some-service:
image: ...
environment:
SERVER_URL: "http://docker-Host:999"
command: ...
depends_on:
- docker-Host
Pour Linux, il n'y a pas de nom DNS par défaut pour la machine hôte. Ceci peut être vérifié en lançant la commande:
docker run -it Alpine cat /etc/hosts
Cette fonctionnalité a été demandée, mais n'a pas été implémentée. Vous pouvez vérifier ceci numéro . Comme indiqué, vous pouvez utiliser la commande suivante pour rechercher l'adresse IP de l'hôte à partir du conteneur.
netstat -nr | grep '^0\.0\.0\.0' | awk '{print $2}'
Vous pouvez également fournir l'ip de l'hôte à la commande d'exécution via docker run --add-Host dockerHost:<ip-address> ...