我尝试从 docker 容器内连接到 MSSQL 服务器,该容器已端口转发到此 Linux 服务器。然而这个转发的端口正在监听 127.0.0.1
root@v2:~# netstat -alpn | grep 1433
tcp 0 0 127.0.0.1:1433 0.0.0.0:* LISTEN 3285/sshd: root
tcp6 0 0 ::1:1433 :::* LISTEN 3285/sshd: root
IP地址显示以下结果。
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:01:07:78 brd ff:ff:ff:ff:ff:ff
inet 10.1.3.10/24 brd 10.1.3.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe01:778/64 scope link
valid_lft forever preferred_lft forever
docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:99:6a:d0:14 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:99ff:fe6a:d014/64 scope link
valid_lft forever preferred_lft forever
我已经尝试过来自的指示这里和这里,但仍然无法从容器内连接到 SQL Server。
从 docker 内部 ping 到 10.1.3.10 成功。从 docker 内部 Telnet 到端口 22 上的 10.1.3.10 成功。
iptables -A PREROUTING -t nat -i docker0 -p tcp --dport 1433 -j REDIRECT --to-port 1433
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 1433 -j DNAT --to 127.0.0.1:1433