![도커 컨테이너와 로컬 호스트 간의 포트 전달](https://linux55.com/image/137175/%EB%8F%84%EC%BB%A4%20%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%99%80%20%EB%A1%9C%EC%BB%AC%20%ED%98%B8%EC%8A%A4%ED%8A%B8%20%EA%B0%84%EC%9D%98%20%ED%8F%AC%ED%8A%B8%20%EC%A0%84%EB%8B%AC.png)
이 Linux 서버로 포트가 전달된 Docker 컨테이너 내에서 MSSQL 서버에 연결하려고 합니다. 그러나 이 전달된 포트는 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 내에서 10.1.3.10으로의 ping이 성공했습니다. Docker 내부에서 포트 22의 10.1.3.10으로의 Telnet이 성공합니다.
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