[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를
lo0
Mac 의 인터페이스에 연결하는 것입니다 . 예를 들어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에서 작동하도록하려면 다음 작업을 수행해야합니다.
-
프록시 서버를
0.0.0.0
대신 청취하십시오127.0.0.1
. 주의 : 악의적 인 액세스를 방지하려면 적절한 방화벽 구성이 필요합니다. -
lo0
인터페이스에 루프백 별명을 추가하십시오 ( 예10.200.10.1/24
:sudo ifconfig lo0 alias 10.200.10.1/24
-
에 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 번역이 도움이 될 수 있음).