모든 도커 컨테이너가 프록시를 사용하도록하려면 어떻게해야합니까?


18

회사 프록시 뒤에있는 Debian Jessie에서 도커를 실행 중입니다. 도커 이미지를 다운로드하려면 다음을 추가해야합니다./etc/defaults/docker

http_proxy="http://localhost:3128/"

이것이 작동하는지 확인할 수 있습니다.

그러나 컨테이너 내에서 interwebz에 액세스하려면 모든 세션을 시작한 --net host다음 다음 env 변수를 설정해야합니다.

export http_proxy=http://localhost:3128/
export https_proxy=https://localhost:3128/
export ftp_proxy=${http_proxy}

이상적으로는 컨테이너에 호스트 네트워크가 필요하지 않고 프록시에 대해 알지 않기를 원합니다 (예 : 컨테이너의 포트 20, 80, 443에 대한 모든 아웃 바운드 호출은 호스트의 프록시 포트를 통해 진행됨). 가능합니까?

실패하면 사이트 설정이 가능하여 이러한 env 변수가 로컬로 설정되지만 이미지의 일부로 내보내지지 않도록 할 수 있습니까?

업데이트 : 나는이 것들을 --env http_proxy=...등으로 전달할 수 있다는 것을 알고 있지만 그것은 어리 석습니다. 별명을 사용할 필요없이 시스템의 모든 사용자가 작동하도록하고 싶습니다.

답변:


5

이 SO 답변보기 :

호스트 서버는 투명한 프록시를 수행 할 수있는 프록시 (이 경우 오징어)를 실행하는 컨테이너를 실행합니다. 해당 컨테이너에는 NAT가 프록시 서버로 트래픽을 보내는 일부 iptables 규칙이 있습니다. 즉, 컨테이너가 권한 모드로 실행되어야합니다.

호스트 서버에는 프록시 컨테이너를 통해 포트 80으로 향하는 프록시를 제외한 모든 컨테이너의 모든 트래픽을 다시 라우팅하는 ip 라우팅 테이블 항목이 포함되어 있습니다.

마지막 비트는 기본적으로 포트 80 트래픽의 경우 컨테이너에서 다른 세계로의 경로가 프록시 컨테이너를 통과하여 NAT 및 투명 프록시에 대한 기회를 제공함을 의미합니다.

https://github.com/silarsis/docker-proxy


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