도커 프록시 프로세스의 요점은 무엇입니까? 사용자 공간 TCP 프록시가 필요한 이유는 무엇입니까?


34

게시 된 각 포트마다 docker-proxy 프로세스가 실행되고 있음을 알았습니다. 이 과정의 목적은 무엇입니까? 여기에 사용자 공간 TCP 프록시가 필요한 이유는 무엇입니까?

$ ps -Af | grep proxy
root      4776  1987  0 01:25 ?        00:00:00 docker-proxy -proto tcp -host-ip 127.0.0.1 -host-port 22222 -container-ip 172.17.0.2 -container-port 22
root      4829  1987  0 01:25 ?        00:00:00 docker-proxy -proto tcp -host-ip 127.0.0.1 -host-port 5555 -container-ip 172.17.0.3 -container-port 5555

docker가 만든 일부 관련 iptable 규칙 :

$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 1 packets, 263 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT 1 packets, 263 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1748 packets, 139K bytes)
 pkts bytes target     prot opt in     out     source               destination         
   32  7200 DOCKER     all  --  *      *       0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT 1719 packets, 132K bytes)
 pkts bytes target     prot opt in     out     source               destination         
   32  7200 MASQUERADE  all  --  *      !docker0  172.17.0.0/16        0.0.0.0/0           

Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            127.0.0.1            tcp dpt:22222 to:172.17.0.2:22
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            127.0.0.1            tcp dpt:5555 to:172.17.0.3:5555

13
이 질문을 끝내는 것에 동의하지 않습니다. serverfault.com/questions/615372 의 파생물 인 유효한 아키텍처 문제입니다 . 우리가 서비스의 문서화 되지 않은 (적어도 웹 사이트에서) 부분으로 보이는 것을 투표 하지 않는다면, 내부를 이해하지 못하는 새롭고 반짝이는 서비스를 맹목적으로 설치 해야하는 경우 질문을 제기합니다 ~의 작업?
Avery Payne

답변:


21

더 나은 해결 방법이없는 일부 경우가 있습니다 (현재).

  • localhost <-> localhost 라우팅
  • 게시 된 포트를 통해 자체적으로 호출되는 도커 인스턴스
  • 그리고 아마도 더

https://github.com/docker/docker/issues/8356

업데이트 : 1.7.0 (2015-06-16) 이후 데몬의 --userland-proxy = false 플래그를 사용하여 헤어핀 NAT를 위해 userland 프록시를 비활성화 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.