Docker 容器中的 Weblogic 端口绑定
Weblogic port binding in Docker container
我手动安装了 weblogic,在 Docker 容器 [Overlay network - Docker swarm] 中配置了域。
[root@host ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
e3f32e71cc16 bridge bridge local
26628a46774c docker_gwbridge bridge local
20c80427519f host host local
9ejgeett1y4y ingress overlay swarm
52d14f492cda none null local
f628wowngc6z myoverlay overlay swarm
启动管理服务器后,我看到管理服务器端口 7001 仅绑定到叠加接口,未绑定到 ANY 接口 0.0.0.0。因此,即使我在创建容器时公开了 7001 端口,我也无法从外部 public 网络访问它。
[root@host /]# netstat -anp | grep 7001
tcp 0 0 10.0.0.5:7001 0.0.0.0:* LISTEN 8168/java
[root@host /]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
265: eth0@if266: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default
link/ether 02:42:0a:00:00:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.0.0.5/24 scope global eth0
valid_lft forever preferred_lft forever
267: eth1@if268: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:13:00:06 brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet 172.19.0.6/16 scope global eth1
valid_lft forever preferred_lft forever
我也在同一个容器中启动了 sshd,但这被绑定到 0.0.0.0 ANY 接口。
[root@host /]# netstat -anp | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1/sshd
我需要 public 网络可以访问 weblogic 管理服务器控制台,而不仅仅是在覆盖网络容器中。那么,如何将 weblogic 管理服务器端口绑定到所有接口 (0.0.0.0)?
问题出在 Weblogic 配置上。如果Listen地址设置为空,weblogic自己会将该端口绑定到所有接口。这解决了我的问题。
我手动安装了 weblogic,在 Docker 容器 [Overlay network - Docker swarm] 中配置了域。
[root@host ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
e3f32e71cc16 bridge bridge local
26628a46774c docker_gwbridge bridge local
20c80427519f host host local
9ejgeett1y4y ingress overlay swarm
52d14f492cda none null local
f628wowngc6z myoverlay overlay swarm
启动管理服务器后,我看到管理服务器端口 7001 仅绑定到叠加接口,未绑定到 ANY 接口 0.0.0.0。因此,即使我在创建容器时公开了 7001 端口,我也无法从外部 public 网络访问它。
[root@host /]# netstat -anp | grep 7001
tcp 0 0 10.0.0.5:7001 0.0.0.0:* LISTEN 8168/java
[root@host /]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
265: eth0@if266: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default
link/ether 02:42:0a:00:00:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.0.0.5/24 scope global eth0
valid_lft forever preferred_lft forever
267: eth1@if268: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:13:00:06 brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet 172.19.0.6/16 scope global eth1
valid_lft forever preferred_lft forever
我也在同一个容器中启动了 sshd,但这被绑定到 0.0.0.0 ANY 接口。
[root@host /]# netstat -anp | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1/sshd
我需要 public 网络可以访问 weblogic 管理服务器控制台,而不仅仅是在覆盖网络容器中。那么,如何将 weblogic 管理服务器端口绑定到所有接口 (0.0.0.0)?
问题出在 Weblogic 配置上。如果Listen地址设置为空,weblogic自己会将该端口绑定到所有接口。这解决了我的问题。