1. 개요

Docker를 사용하는 동안 인터넷에 직접 액세스할 수 없는 경우 인터넷에 연결할 수 있도록 Docker 엔진과 Docker 클라이언트 모두에 프록시 설정을 제공합니다. 회사 네트워크 또는 사설 클라우드에서 Docker를 사용할 때 일반적으로 프록시 서버를 통해 인터넷에 연결해야 할 수 있습니다. 이 경우 프록시를 사용해야 합니다.

이 사용방법(예제)에서는 Docker로 프록시를 구성할 때 발생할 수 있는 문제를 해결하는 방법을 알아봅니다.

2. 프록시란?

프록시 서버 는 요청한 사용자와 웹사이트 간의 트래픽을 제어하고 라우팅합니다 . 프록싱은 사용자를 보호하고 네트워크 Security 및 개인 정보 보호 정책을 유지하는 것을 목표로 합니다. 프록시가 없으면 사용자는 대상 서버에 직접 요청을 보내고 응답을 받습니다.

도커 프록시 2

프록시를 사용할 때 요청은 먼저 프록시 서버로 이동한 다음 프록시가 대상 서버에 액세스합니다 . 아래 이미지와 같이 프록시는 클라이언트와 대상 서버 사이에 위치하며 클라이언트의 모든 요청은 먼저 프록시로 전달되고 프록시는 대상 서버에 대한 액세스를 제공합니다.

도커 프록시 1

3. 도커 프록시 구성

Docker 17.07 이상에서는 프록시 정보를 컨테이너에 자동으로 전달하도록 Docker 클라이언트를 구성할 수 있습니다. Docker 17.06 및 이전 버전에서는 환경 변수를 통해 Docker 클라이언트 프록시 설정을 지정할 수 있습니다.

다음 JSON 예제를 ~/.docker/config.json 파일에 추가하고 프록시 설정을 완료해 보겠습니다. * 문자를 호스트에 대한 와일드카드로 사용하고 IP 주소에 CIDR 표기법을 사용하는 것이 지원됩니다.

{ 
  "proxies":
    { 
      "default": 
        { 
          "httpProxy": "http://<ip-address>:<port>", 
          "httpsProxy": "https://<ip-address>:<port>", 
          "noProxy": "*.<domain>,127.0.0.0/8" 
        } 
    } 
}

변경 사항을 저장하면 config.json 파일 에 지정된 환경 변수로 각 Docker 컨테이너가 생성되고 프록시 설정이 유효합니다.

4. 프록시 서버 설정

HTTP_PROXY , HTTPS_PROXY , FTP_PROXYNO_PROXY 환경 변수를 사용 하여 Docker 데몬에 대한 프록시 서비스를 구성해야 합니다. 이러한 변수를 자세히 살펴보겠습니다.

  • HTTP_PROXY  는 클라이언트와 웹 서버 간의 중간 서버 역할을 하는 프록시 유형입니다. HTTP 프록시 서버를 사용하면 요청이 웹 사이트로 이동하지 않습니다. 일반 텍스트로 프록시로 이동합니다. 프록시는 이를 분석한 다음 요청과 함께 제공된 데이터를 사용하여 IP 주소를 (선택적으로) 변경하여 웹 사이트에 새 요청을 보냅니다. 웹 사이트는 이를 수신하고 프록시에 응답을 보냅니다. 그런 다음 프록시는 응답을 우리에게 전달합니다.
  • HTTPS_PROXY 는 HTTP 프록시보다 더 안전하고 익명입니다. HTTPS 프로토콜은 일반 텍스트 형식으로 데이터를 전송하지 않습니다. SSL 계층은 데이터를 암호화하여 제3자가 볼 수 없도록 합니다.
  • FTP_PROXY 는 활성 및 수동 FTP 세션을 관리합니다. 또한 FTP 서버를 보호하고 클라이언트와 서버 간의 FTP 프로토콜 명령을 제한합니다.
  • NO_PROXY 설정은 프록시를 사용하지 않아야 하는 주소를 지정하는 데 사용됩니다.

5. 프록시 설정을 수동으로 구성

Docker 17.07 및 이전 버전에서는 –env 플래그 를 사용하여 프록시 설정을 지정해야 합니다 .

docker run [docker_image] --env FTP_PROXY="ftp://<ip-address>:<port>"
docker run [docker_image] --env HTTP_PROXY="http://<ip-address>:<port>"
docker run [docker_image] --env HTTPS_PROXY="https://<ip-address>:<port>"
docker run [docker_image] --env NO_PROXY="*.<domain>,127.0.0.0/8"

또는 Dockerfile 에 추가해야 합니다 .

ENV FTP_PROXY="ftp://<ip-address>:<port>"
ENV HTTP_PROXY="http://<ip-address>:<port>"
ENV HTTPS_PROXY="https://<ip-address>:<port>"
ENV NO_PROXY="*.<domain>,127.0.0.0/8"

이러한 작업을 통해 이제 Docker 프록시 작업을 수행할 수 있습니다.

6. 결론

이 사용방법(예제)에서는 프록시가 무엇이며 다른 버전의 Docker에서 프록시를 설정하는 방법을 배웠습니다.

Generic footer banner