linux容器返回宿主机,Linux下Docker容器访问宿主机网络

0.背景

docker启动时,如果创建了自定义的docker网络:

将容器run在该网络中时,容器访问的localhost不是宿主机的localhost.

1.解决

1.1 启动时该为host网络模式启动

--network host

示例

# host网络模式,无需映射端口. (\表示换行)

docker run -d --name konga --network host -e "NODE_ENV=production" -e "DB_ADAPTER=mysql" -e "DB_URI=mysql://root:[email protected]:5432/konga" pantsel/konga

1.2 修改localhost为docker网络的ip

1.2.1 查看docker下的网络

# 查看docker网络信息

docker network ls

# 控制台显示

# DRIVER参数代表网络类型.

NETWORK ID NAME DRIVER SCOPE

e34f9fddb6bd bridge bridge local

e3e320be538b host host local

8a1dd9a77350 none null local

e01f2aaa9bf5 test_network bridge local

cbb7bbd9dd54 test_network2 bridge local

1.2.2 查看指定网络的信息

查看docker0

Docker启动的时候会在主机上自动创建一个docker0网络,实际上是一个Linux网桥.

如果在docker run的时候,没有指定网络模式时.

此时都会挂载到docker0网桥上,这样容器就可以和主机甚至是其他容器之间通讯了.

# 查看docker0的ip信息

ip addr show docker0

# 控制台显示

3: docker0: mtu 1500 qdisc noqueue state DOWN group default

link/ether 02:42:8c:08:a0:f9 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

valid_lft forever preferred_lft forever

inet6 fe80::42:8cff:fe08:a0f9/64 scope link

valid_lft forever preferred_lft forever

查看test_network

# docker中查看test_network网络的信息

docker network ls | grep test

# 控制台显示

e01f2aaa9bf5 test_network bridge local

cbb7bbd9dd54 test_network2 bridge local

# 其实就是NETWORKID加上了个br

ip addr show br-e01f2aaa9bf5

# 控制台显示

16: br-e01f2aaa9bf5: mtu 1500 qdisc noqueue state DOWN group default

link/ether 02:42:44:31:54:fc brd ff:ff:ff:ff:ff:ff

inet 172.18.0.1/16 brd 172.18.255.255 scope global br-e01f2aaa9bf5

valid_lft forever preferred_lft forever

1.2.3 查看所有网络信息

# 查看所有网络信息

ifconfig

# 控制台显示

br-cbb7bbd9dd54: flags=4099 mtu 1500

inet 172.19.0.1 netmask 255.255.0.0 broadcast 172.19.255.255

ether 02:42:aa:cb:98:a6 txqueuelen 0 (Ethernet)

RX packets 9922240 bytes 4198752081 (3.9 GiB)

RX errors 0 dropped 404 overruns 0 frame 0

TX packets 10043689 bytes 2152701308 (2.0 GiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

br-e01f2aaa9bf5: flags=4099 mtu 1500

inet 172.18.0.1 netmask 255.255.0.0 broadcast 172.18.255.255

ether 02:42:44:31:54:fc txqueuelen 0 (Ethernet)

RX packets 1654739 bytes 284217999 (271.0 MiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 1654739 bytes 284217999 (271.0 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

docker0: flags=4099 mtu 1500

inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255

inet6 fe80::42:8cff:fe08:a0f9 prefixlen 64 scopeid 0x20

ether 02:42:8c:08:a0:f9 txqueuelen 0 (Ethernet)

RX packets 650 bytes 156927 (153.2 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 736 bytes 105419 (102.9 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth0: flags=4163 mtu 1452

inet 10.23.143.148 netmask 255.255.0.0 broadcast 10.23.255.255

inet6 fe80::5054:ff:fe73:7e08 prefixlen 64 scopeid 0x20

ether 52:54:00:73:7e:08 txqueuelen 1000 (Ethernet)

RX packets 9922240 bytes 4198752081 (3.9 GiB)

RX errors 0 dropped 404 overruns 0 frame 0

TX packets 10043689 bytes 2152701308 (2.0 GiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73 mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10

loop txqueuelen 1000 (Local Loopback)

RX packets 1654739 bytes 284217999 (271.0 MiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 1654739 bytes 284217999 (271.0 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

原文:https://www.cnblogs.com/yang37/p/14687983.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值