MacおよびWindowsでは、使用できます docker.for.mac.Host.internal
(docker.for.mac.localhost
を置換)およびdocker.for.win.Host.internal
(docker.for.win.localhost
を置換)Host.docker.internal
(Docker 18.03+)コンテナ内。
Env変数を渡したり、さまざまなcliコマンドを使用して抽出したりすることなく、そのまま使用できるLinux用のものはありますか。
何をしようとしているかによって異なります。 --net=Host
で実行している場合、localhost
は正常に動作するはずです。デフォルトのネットワークを使用している場合は、静的IP 172.17.0.1
を使用します。私はどちらもそれらのドメインと全く同じように振る舞わないと思います。
1つの解決策は、トラフィックをホストにリダイレクトする特別なコンテナを使用することです。このようなコンテナは、ここで見つけることができます: https://github.com/qoomon/docker-Host 。アイデアは、コンテナ内からデフォルトルートを取得し、それを着信接続用のNATゲートウェイとしてインストールすることです。
想像上の使用例の下:
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
Linuxの場合、ホストマシンのデフォルトのDNS名はありません。これは、次のコマンドを実行して確認できます。
docker run -it Alpine cat /etc/hosts
この機能は要求されましたが、実装されていませんでした。これを確認できます issue 。前述のように、次のコマンドを使用して、コンテナーからホストのIPを見つけることができます。
netstat -nr | grep '^0\.0\.0\.0' | awk '{print $2}'
または、docker run --add-Host dockerHost:<ip-address> ...
を介して実行コマンドにホストIPを提供できます。