web-dev-qa-db-ja.com

「docker.for.mac.Host.internal」に相当するLinuxとは

MacおよびWindowsでは、使用できます docker.for.mac.Host.internaldocker.for.mac.localhostを置換)およびdocker.for.win.Host.internaldocker.for.win.localhostを置換) Host.docker.internal(Docker 18.03+)コンテナ内。

Env変数を渡したり、さまざまなcliコマンドを使用して抽出したりすることなく、そのまま使用できるLinux用のものはありますか。

21
klor

何をしようとしているかによって異なります。 --net=Hostで実行している場合、localhostは正常に動作するはずです。デフォルトのネットワークを使用している場合は、静的IP 172.17.0.1を使用します。私はどちらもそれらのドメインと全く同じように振る舞わないと思います。

12
mark

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
10
Jonas Chapuis

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を提供できます。

7
yamenk