1. 개요
Docker를 사용하는 동안 인터넷에 직접 액세스할 수 없는 경우 인터넷에 연결할 수 있도록 Docker 엔진과 Docker 클라이언트 모두에 프록시 설정을 제공합니다. 회사 네트워크 또는 사설 클라우드에서 Docker를 사용할 때 일반적으로 프록시 서버를 통해 인터넷에 연결해야 할 수 있습니다. 이 경우 프록시를 사용해야 합니다.
이 사용방법(예제)에서는 Docker로 프록시를 구성할 때 발생할 수 있는 문제를 해결하는 방법을 알아봅니다.
2. 프록시란?
프록시 서버 는 요청한 사용자와 웹사이트 간의 트래픽을 제어하고 라우팅합니다 . 프록싱은 사용자를 보호하고 네트워크 Security 및 개인 정보 보호 정책을 유지하는 것을 목표로 합니다. 프록시가 없으면 사용자는 대상 서버에 직접 요청을 보내고 응답을 받습니다.
프록시를 사용할 때 요청은 먼저 프록시 서버로 이동한 다음 프록시가 대상 서버에 액세스합니다 . 아래 이미지와 같이 프록시는 클라이언트와 대상 서버 사이에 위치하며 클라이언트의 모든 요청은 먼저 프록시로 전달되고 프록시는 대상 서버에 대한 액세스를 제공합니다.
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_PROXY 및 NO_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에서 프록시를 설정하는 방법을 배웠습니다.