[proxy] 프록시 뒤에 Docker 이미지를 다운로드 할 수 없습니다

Ubuntu 13.10 (Saucy Salamander)에 콘솔을 입력하면 Docker를 설치했습니다.

sudo docker pull busybox

다음과 같은 오류가 발생합니다.

Pulling repository busybox
2014/04/16 09:37:07 Get https://index.docker.io/v1/repositories/busybox/images: dial tcp: lookup index.docker.io on 127.0.1.1:53: no answer from server

도커 버전 :

$ sudo docker version

Client version: 0.10.0
Client API version: 1.10
Go version (client): go1.2.1
Git commit (client): dc9c28f
Server version: 0.10.0
Server API version: 1.10
Git commit (server): dc9c28f
Go version (server): go1.2.1
Last stable version: 0.10.0

인증이없는 프록시 서버 뒤에 있으며 이것은 내 /etc/apt/apt.conf파일입니다.

Acquire::http::proxy "http://192.168.1.1:3128/";
Acquire::https::proxy "https://192.168.1.1:3128/";
Acquire::ftp::proxy "ftp://192.168.1.1:3128/";
Acquire::socks::proxy "socks://192.168.1.1:3128/";

내가 뭘 잘못하고 있죠?



답변

다음은 프록시 HTTP에 대한 공식 Docker 설명서에 대한 링크입니다.
https://docs.docker.com/config/daemon/systemd/#httphttps-proxy

빠른 개요 :

먼저 Docker 서비스에 대한 시스템 드롭 인 디렉토리를 작성하십시오.

mkdir /etc/systemd/system/docker.service.d

이제 환경 변수 /etc/systemd/system/docker.service.d/http-proxy.conf를 추가 하는 파일을 작성 HTTP_PROXY하십시오.

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"

프록시없이 연락해야하는 내부 Docker 레지스트리가있는 경우 NO_PROXY환경 변수 를 통해 지정할 수 있습니다 .

Environment="HTTP_PROXY=http://proxy.example.com:80/"
Environment="NO_PROXY=localhost,127.0.0.0/8,docker-registry.somecorporation.com"

플러시 변경 사항 :

$ sudo systemctl daemon-reload

구성이로드되었는지 확인하십시오.

$ sudo systemctl show --property Environment docker
Environment=HTTP_PROXY=http://proxy.example.com:80/

Docker를 다시 시작하십시오.

$ sudo systemctl restart docker


답변

APT 프록시 설정은 Docker와 관련이 없습니다.

Docker는 HTTP_PROXY 환경 변수가있는 경우이를 사용합니다. 예를 들면 다음과 같습니다.

sudo HTTP_PROXY=http://192.168.1.1:3128/ docker pull busybox

그러나 대신 /etc/default/docker구성 파일을 살펴 보는 것이 좋습니다 . 프록시 설정을 자동으로 적용하려면 주석 처리를 제거 (및 조정 가능)해야합니다. 그런 다음 Docker 서버를 다시 시작하십시오.

service docker restart


답변

CentOS에서 Docker의 구성 파일은 다음 위치에 있습니다.

/etc/sysconfig/docker

아래 줄을 추가하면 Docker 데몬이 프록시 서버 뒤에서 작동하는 데 도움이되었습니다.

HTTP_PROXY="http://<proxy_host>:<proxy_port>"
HTTPS_PROXY="http://<proxy_host>:<proxy_port>"


답변

새로운 Mac 용 Docker (또는 Windows 용 Docker)를 사용하는 경우 Docker 트레이 아이콘을 마우스 오른쪽 버튼으로 클릭하고 환경 설정 (Windows : 설정)을 선택한 다음 고급으로 이동하여 프록시 아래에서 프록시 설정을 지정하십시오. 적용 및 다시 시작을 클릭 하고 Docker가 다시 시작될 때까지 기다리 십시오 .


답변

우분투에서는 클라이언트 프로세스가 아닌 Docker 데몬에 http_proxy를 설정해야합니다. 이 작업은 다음과 같습니다 /etc/default/docker( 여기 참조 ).


답변

Arun의 답변 을 확장하기 위해 CentOS 7에서 작동하려면 “export”명령을 제거해야했습니다. 편집

/etc/sysconfig/docker

그리고 추가하십시오 :

HTTP_PROXY="http://<proxy_host>:<proxy_port>"
HTTPS_PROXY="https://<proxy_host>:<proxy_port>"
http_proxy="${HTTP_PROXY}"
https_proxy="${HTTPS_PROXY}"

그런 다음 Docker를 다시 시작하십시오.

sudo service docker restart

소스는이 블로그 게시물입니다 .


답변

로컬 바인딩 프록시가 작동하지 않는 이유

문제

수신 대기와 같은 로컬 바운드 프록시를 실행하는 경우 Mac 용 Docker127.0.0.1:8989 에서 작동하지 않습니다 . 로부터 도커 문서 :

컨테이너에서 호스트의 서비스로 연결하고 싶습니다.

Mac의 IP 주소가 변경되었습니다 (또는 네트워크에 액세스 할 수없는 경우). 현재 권장 사항은 사용하지 않는 IP를 lo0Mac 의 인터페이스에 연결하는 것입니다 . 예를 들어 sudo ifconfig lo0 alias 10.200.10.1/24, 서비스가이 주소에서 수신 대기 중인지 0.0.0.0(예 : 아닌 127.0.0.1) 확인하십시오. 그런 다음 컨테이너는이 주소에 연결할 수 있습니다.

Docker 서버 측에서도 마찬가지입니다. (Docker의 서버 측과 클라이언트 측을 이해하려면을 실행하십시오 docker version.) 그리고 서버 측은 고유 한 가상화 계층에서 실행됩니다 localhost. 따라서 localhost호스트 OS 의 프록시 서버에 연결되지 않습니다 .

해결책

따라서 나와 같은 로컬 바운드 프록시를 사용하는 경우 기본적으로 Docker for Mac에서 작동하도록하려면 다음 작업을 수행해야합니다.

  1. 프록시 서버를 0.0.0.0대신 청취하십시오 127.0.0.1. 주의 : 악의적 인 액세스를 방지하려면 적절한 방화벽 구성이 필요합니다.

  2. lo0인터페이스에 루프백 별명을 추가하십시오 ( 예 10.200.10.1/24:

    sudo ifconfig lo0 alias 10.200.10.1/24
    
  3. 에 HTTP 및 / 또는 HTTPS 프록시 설정 10.200.10.1:8989에서 기본 설정 도커 트레이 메뉴 (프록시 서버 포트에서 수신되어 있다고 가정 8989).

그런 다음 다운로드되지 않은 이미지의 새 컨테이너에서 명령을 실행하여 프록시 설정을 테스트하십시오.

$ docker rmi -f hello-world
  ...

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world

c04b14da8d14: Pull complete
Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Status: Downloaded newer image for hello-world:latest
  ...

참고 :로 설정 한 루프백 별명ifconfig은 재부팅 후에도 유지되지 않습니다. 그것을 지속시키는 것은 또 다른 주제입니다. 이 블로그 게시물 을 일본어로확인하십시오(Google 번역이 도움이 될 수 있음).