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