많은 사내 환경에서 프록시 정책을 가지고 있기 때문에 프로그램마다 프록시 설정하는 방법을 documentation에 가이드합니다. 리눅스환경에서는 http_proxy와 같은 환경 변수를 읽어 동작하게끔 나름대로 표준화되어 있긴 합니다만 조금씩 상이하거나 docker와 같이 가상환경이 있거나 실행하는 user 자체가 다르거나 등등 여러 변수 요소 때문에 가이드 대로 proxy 설정을 하는 것이 가장 효과적입니다.

Docker 버전 17.06 이하

우분투 16.04 (xenial)에서는 다음과 같이 하위 우분투 버전에서 하던 방법대로 진행하면 작동하지를 않습니다.

/etc/default/docker 파일에 http_proxy 등의 환경 변수 설정

예:

export HTTP_PROXY="http://proxy.your.corp/"

최근 리눅스 진영에서는 데몬을 관리하는데 있어 systemd를 사용하는 추세로 움직이고 있습니다. 따라서 최신 리눅스 버전에서도 이에 맞게 설정해야 합니다.

  1. 다음과 같이 systemd drop-in directory를 만듭니다.
      sudo mkdir /etc/systemd/system/docker.service.d
    
  2. 프록시 설정만 override하기 위해 /etc/systemd/system/docker.service.d/http-proxy.conf 파일을 작성합니다. (주: 파일명은 달라도 .conf와 같은 확장자를 사용해야만 합니다.)
      [Service]
      Environment="HTTP_PROXY=http://proxy.your.corp/" "HTTPS_PROXY=https://proxy.your.corp/" "NO_PROXY=localhost,127.0.0.1,docker-registry.your.corp"
    
  3. 설정을 적용합니다.
      sudo systemctl daemon-reload
    
  4. docker를 재시작합니다.
      sudo systemctl restart docker
    

Docker 버전 17.07 이상

버전 17.07부터는 이러한 많은 프록시 수요로 인해 user-level configuration으로 도출되었습니다.

~/.docker/config.json 파일을 작성/수정합니다.

{
    "proxies": {
        "default": {
            "httpProxy": "http://proxy.your.corp",
            "httpsProxy": "https://proxy.your.corp",
            "noProxy": "localhost,127.0.0.1,*.your.corp"
        }
    }
}

Reference