什么是linux相当于“docker.for.mac.host.internal”

问题描述 投票:17回答:3

在Mac和Windows上,可以在容器内使用docker.for.mac.host.internal(替换docker.for.mac.localhost)和docker.for.win.host.internal(替换docker.for.win.localhost)。

是否有一个Linux将开箱即用而不传递env变量。

docker docker-for-windows docker-for-mac docker-desktop
3个回答
11
投票

取决于你想要做什么。如果你和--net=host一起跑,localhost应该可以正常工作。如果您使用的是默认网络,请使用静态IP 172.17.0.1。我怀疑这两个域的行为都不一样。


10
投票

一种解决方案是使用特殊容器将流量重定向到主机。你可以在这里找到这样一个容器: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

6
投票

对于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> ...将host ip提供给run命令

© www.soinside.com 2019 - 2024. All rights reserved.