方法1:使用 --add-host 参数
在运行容器时,可以通过 --add-host 参数手动将宿主机的IP地址映射到 host.docker.internal。
-
获取宿主机的IP地址:
baship route show default | awk '/default/ {print $3}'通常,宿主机的IP地址是
172.17.0.1(Docker默认网桥的网关地址)。 -
运行容器时添加
--add-host参数:bashdocker run --add-host=host.docker.internal:172.17.0.1 your_image
方法2:修改Docker守护进程配置
通过修改Docker守护进程的配置文件,可以全局启用 host.docker.internal。
-
编辑Docker守护进程配置文件(通常是
/etc/docker/daemon.json):bashsudo nano /etc/docker/daemon.json -
添加以下内容:
json{ "dns": ["8.8.8.8", "8.8.4.4"], "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"], "extra-hosts": ["host.docker.internal:host-gateway"] } -
重启Docker服务:
bashsudo systemctl restart docker
方法3:使用 docker-compose
如果你使用 docker-compose,可以在 docker-compose.yml 文件中配置 extra_hosts。
-
编辑
docker-compose.yml文件:yamlversion: '3' services: your_service: image: your_image extra_hosts: - "host.docker.internal:host-gateway" -
启动服务:
bashdocker-compose up
方法4:直接使用宿主机的IP地址
如果你不需要 host.docker.internal 这个名称,可以直接使用宿主机的IP地址。
-
获取宿主机的IP地址:
bashhostname -I | awk '{print $1}' -
在容器中使用该IP地址访问宿主机。
总结
在Linux上,host.docker.internal 默认不可用,但可以通过 --add-host、修改Docker配置或使用 docker-compose 实现类似功能。选择最适合你的方法即可。