2017-04-24 6 views
1

(가상 박스에서 실행되는) 방해 기계 내에서 도커 컨테이너 내에서 apt를 실행하려고하지만 프록시를 사용하고 있기 때문에 실패합니다. 프록시 뒤에있는 방해 요소 내에서 도커 사용

if Vagrant.has_plugin?("vagrant-proxyconf") 
    config.proxy.http  = ... 
    config.proxy.https = ... 
    config.proxy.no_proxy = "localhost,127.0.0.1,.example.com" 
end 

그러나, 이러한 설정은 컨테이너를 고정 표시기을 통해 수행되지 않습니다

가 방랑 머신 내에서 시작 :

가 나는 방랑 기계 자체가 잘 작동 인터넷에 연결할 수 있도록 방랑-proxyconf를 사용합니다. 내가

docker run -it debian /bin/bash 

와 데비안 기반의 고정 표시기 컨테이너를 시작하고 떠들썩한 파티에서 내가

apt-get update 

을 실행하면 다음 적절한 연결을 설정할 수 없습니다. 내 Dockerfile

ENV http_proxy <myproxy> 

에 다음을 추가하지만, 모든 Dockerfile의 성가신 것 조정하여이 문제를 해결할 수 있고, 나는 그 또한 다른에서 사용되는 바와 같이, Dockerfile의 자신에 내 프록시를 하드 코딩하지 않으려는 것 설정.

나는 또한 사용하여 사용하는 것을 프록시 고정 표시기를 말하는 시도했다 : https://docs.docker.com/engine/admin/systemd/

그러나,이 프록시에 어떤 영향을 미칠하지 표시 그 고정 표시기 컨테이너 내의 적절한 사용합니다.

내 컴퓨터에서 기본적으로 시작된 모든 도커 컨테이너에 http_proxy 환경 변수를 전달하는 방법이 있습니까? 또는, 모든 가상화 계층을 통해 프록시 설정에 도달 할 필요가 없도록 "프록시가없는"인터넷 연결을 "모방"하도록 방랑/가상 상자를 구성 할 수 있습니까?

답변

1

docker 빌드 명령에서 인수로 전달하는 vars를 추가 할 수 있습니다. 그렇게하면 작동 할 것이고 프록시 IP는 Dockerfile에 없을 것입니다.

RUN echo ${http_proxy} 

그러나 지역 :

ARG http_proxy 

자동으로 VAR이 방법으로 사용 할 수 있습니다 :

docker build -t --build-arg http_proxy="http://yourIp" yourImage 

그런 다음 Dockerfile에 당신이 인수로 VAR를 설정해야합니다 이런 식으로 귀하의 경우에는 그것을 사용하지 않아도됩니다, 단지 프록시 var을 설정하는 것은 건물을 짓는 동안 사용할 수 있습니다.

이 기술은 Dockerfiles에 쓰기 암호를 피하기 위해 매우 유용 할 수 있습니다.

희망 하시겠습니까?