赞
踩
docker
在安装时会默认创建三个网络,bridge
(创建容器默认连接到此网络)、 none
、host
。
host
直接和宿主机共用网络。bridge
网络隔离,通过虚拟网桥(一般是 docker0
)与宿主机通信。none
禁用网络功能。docker network ls
可查看网络设置,输出如下:
NETWORK ID NAME DRIVER SCOPE
1363ad4ba2a5 bridge bridge local
715796504a13 host host local
723f2680cdad none null local
Docker
创建一个容器的时候,会执行如下操作:
docker0
或指定网桥上,并具有一个唯一的名字,如 veth65f9
;eth0
,这个接口只在容器的命名空间可见;veth65f9
。完成这些之后,容器就可以使用 eth0
虚拟网卡来连接其他容器和其他网络。
该模式下容器可以直接使用 127.0.0.1
, localhost
来访问宿主机。
在 docker
中使用 --network host
来为容器配置 host
网络:
docker run --network host host-main
docker-compose
使用 network_mode: "host"
进行配置:
version: "3"
services:
main:
build:
context: .
dockerfile: ./dockerfile
network_mode: "host"
可以使用宿主机在 docker0
上的 IP
来代替 localhost
。
IP
ip addr show docker0
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:5a:02:53:f5 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:5aff:fe02:53f5/64 scope link
valid_lft forever preferred_lft forever
可以发现宿主机的 IP
是 172.17.0.1
,那么将地址 http://localhost:4780
改为 http://172.17.0.1:4780
即可访问。
同理,Windows
中我们也可以找到虚拟网卡,查看 IP
进行更换
http://localhost:4780
=> http://192.168.236.129:4780
Windows
还可以通过 host.docker.internal
这个特殊的 DNS
名称来解析宿主机 IP
。hosts
映射在 C:\Windows\System32\drivers\etc\hosts
,文件内容如下:
http://localhost:4780
=> http://host.docker.internal:4780
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。