도커 네트워크에 IP가 172.20.0.2인 도커 컨테이너가 있다고 가정합니다.
이 도커 컨테이너 내부에는 두 개의 프로세스가 실행되고 있습니다.
- 포트 8000을 수신하는 http 서버는 항상 "hello"라고 응답합니다.
- 계속 연결을 시도하는 http 클라이언트http://example.com
ip 테이블을 사용하여 가능합니까?주인해당 컨테이너의 모든 아웃바운드 트래픽을 동일한 컨테이너로 다시 전달합니다.
따라서 위 시나리오에서 example.com에 대한 http 요청은 실제로 동일한 컨테이너 내의 포트 8000으로 이동하여 "hello"를 반환합니다.
이것이 docker에 없으면 다음이 작동할 것 같습니다. 나는 가까운가?
iptables -t nat -A OUTPUT -s 172.20.0.0/16 -j REDIRECT --to-ports 8000
하지만 이것은 호스트에서 8000으로 전달되는 것 뿐이라고 생각합니다.
답변1
/etc/hosts
Docker 컨테이너에서 파일을 편집하는 것이 좋습니다 .
172.20.0.2 example.com
이는 클라이언트가 연결을 시도할 때마다http://example.com:8000HTTP를 통해 트래픽은 172.20.0.2:8000의 Docker 컨테이너로 전달되고 예상대로 "hello" 응답이 수신됩니다.