programing

프록시 뒤에 있는 도커 이미지를 다운로드할 수 없음

newsource 2023. 7. 29. 08:30

프록시 뒤에 있는 도커 이미지를 다운로드할 수 없음

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에 대한 공식 도커 문서 링크는 다음과 같습니다. https://docs.docker.com/config/daemon/systemd/ #httpttps-http

간단한 개요:

먼저 Docker 서비스에 대한 systemd 드롭인 디렉토리를 만듭니다.

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

이제 이다음파만듭라는 을 만들어 ./etc/systemd/system/docker.service.d/http-proxy.conf그것은 추가되는 것은HTTP_PROXY그리고.HTTPS_PROXY환경 변수:

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

하지 않고 Docker 에는 프록시사연하야내는도레가를 통해 할 수 .NO_PROXY환경 변수:

Environment="HTTP_PROXY=http://proxy.example.com:80/"
Environment="HTTPS_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/
Environment=HTTPS_PROXY=http://proxy.example.com:80/

도커 다시 시작:

$ sudo systemctl restart docker

에 관한 HTTP_PROXY대 대HTTPS_PROXY 오동안랫, 정설정을 설정함HTTP_PROXY그것만으로도 충분했습니다.그러나 버전 20.10.8에서 Docker는 Go 1.16으로 이동하여 다음 변수의 의미를 변경했습니다. https://golang.org/doc/go1.16#net/http
위해서https://는 이제 URL인 프시는다의결해다니에 됩니다.HTTPS_PROXY 변수, 폴없에 HTTP_PROXY.

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

도커는 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용 도커(또는 Windows용 도커)를 사용하는 경우 도커 트레이 아이콘을 마우스 오른쪽 단추로 클릭하고 기본 설정(Windows:설정)을 선택한 다음 고급으로 이동하고 프록시에서 프록시 설정을 지정합니다.적용 및 다시 시작을 클릭하고 도커가 다시 시작될 때까지 기다립니다.

Ubuntu에서 클라이언트 프로세스가 아닌 Docker 데몬의 http_proxy를 설정해야 합니다.이 작업은 에서 수행됩니다./etc/default/docker(여기 참조).

아룬의 답변을 연장하기 위해, 이것이 센트에서 작동하기 위해.OS 7, "내보내기" 명령을 제거해야 했습니다.편집합니다.

/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}"

그런 다음 도커를 다시 시작합니다.

sudo service docker restart

출처는 이 블로그 게시물입니다.

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

문제

로컬로 바인딩된 프록시(예: 수신 대기)를 실행하는 경우 Mac용 Docker에서 작동하지 않습니다.도커 설명서에서 다음을 참조하십시오.

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

Mac에 변경된 IP 주소가 있습니다(네트워크 액세스 권한이 없는 경우에는 없음).하는 것은 하지 않는 입니다.lo0다음과 같은 인터페이스를 사용할 수 있습니다.sudo ifconfig lo0 alias 10.200.10.1/24가 이 하십시오.0.0.0.0(그렇지 않음)127.0.0.1그러면 컨테이너가 이 주소에 연결될 수 있습니다.

측과 클라이언트하려면 (Docker의 서버 클라이언트 측)을 실행.docker version.) 서버 측은 자체적으로 가상화 계층에서 실행됩니다.localhost따서이서의프서연버않습다니결지되의 localhost호스트 OS의

해결책

따라서 저처럼 로컬로 바인딩된 프록시를 사용하는 경우 기본적으로 Mac용 Docker와 함께 작동하려면 다음 작업을 수행해야 합니다.

  1. 를 에서 대기 상태로 만듭니다.0.0.0.0127.0.0.1주의: 방화벽에 대한 악의적인 액세스를 방지하려면 적절한 방화벽 구성이 필요합니다.

  2. 을 루백별에니다에 합니다.lo0인터페이스(예::

     sudo ifconfig lo0 alias 10.200.10.1/24
    
  3. 도커 트레이 메뉴의 기본 설정에서 HTTP 및/또는 HTTPS 프록시를 로 설정합니다(프록시 서버가 포트에서 수신 중이라고 가정).

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

$ 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 Translate가 도움이 될 수 있습니다).

이것이 저에게 효과가 있었던 수정 사항입니다: Ubuntu, Docker 버전: 1.6.2

파서에 ./etc/default/docker행을 합니다.

export http_proxy='http://<host>:<port>'

도커 다시 시작

sudo service docker restart

하려면 HTTPS_PROXY / HTTP_PROXY 파일Docker sysconfig 파일)에(Docker sysconfig 파일은 HTTPS_PROXY / HTTP_PROXY 환경 변수입니다)./etc/sysconfig/docker).

사용하는 init.d또는 "export" 문을 추가하는 데 필요한 서비스 도구(Debian Bug 보고서 로그로 인해 - #767441). /etc/default/docker의 예는 지원되는 구문과 관련하여 오해의 소지가 있습니다.)

HTTPS_PROXY="https://<user>:<password>@<proxy-host>:<proxy-port>"
HTTP_PROXY="https://<user>:<password>@<proxy-host>:<proxy-port>"
export HTTP_PROXY="https://<user>:<password>@<proxy-host>:<proxy-port>"
export HTTPS_PROXY="https://<user>:<password>@<proxy-host>:<proxy-port>"

도커 저장소(도커 허브)는 HTTPS만 지원합니다.도커가 SSL 인터셉트 프록시와 함께 작동하도록 하려면 프록시 루트 인증서를 시스템 신뢰 저장소에 추가해야 합니다.

경우 을 Cent로 합니다.OS의 경우 파일 복사 위치/etc/pki/ca-trust/source/anchors/및 CA 신뢰 저장소를 업데이트하고 Docker 서비스를 다시 시작합니다.

프록시가 NTLMv2 인증을 사용하는 경우 Cntlm과 같은 중간 프록시를 사용하여 인증을 브리지해야 합니다.이 블로그 게시물은 그것을 자세히 설명합니다.

Docker를 설치한 후 다음을 수행합니다.

[mdesales@pppdc9prd1vq ~]$ sudo HTTP_PROXY=http://proxy02.ie.xyz.net:80 ./docker -d &
[2] 20880

그런 다음 풀링 또는 작업을 수행할 수 있습니다.

mdesales@pppdc9prd1vq ~]$ sudo docker pull base
2014/04/11 00:46:02 POST /v1.10/images/create?fromImage=base&tag=
[/var/lib/docker|aa088847] +job pull(base, )
Pulling repository base
b750fe79269d: Download complete
27cf78414709: Download complete
[/var/lib/docker|aa088847] -job pull(base, ) = OK (0)

도커 엔진인 도커의 새 버전에서는 systemd 기반 배포판에서 환경 변수 행을 다른 사용자가 언급한 대로 /lib/systemd/system/docker.service에 추가해야 합니다.

Environment="HTTP_PROXY=http://hostname_or_ip:port/"

아직 논평할 수 없기 때문에:

포 센트OS 7 여기에 설명된 것처럼 "docker.service" 내에서 환경 파일을 활성화해야 했습니다. systemd로 Docker 제어구성.

편집: Nilesh가 명시한 대로 솔루션을 추가합니다."/etc/systemd/system/docker.service"를 열고 섹션 내에 추가해야 했습니다.

[서비스]

EnvironmentFile=-/etc/sysconfig/도커

그때서야 "etc/sysconfig/docker" 파일이 시스템에 로드되었습니다.

socks5 프록시를 사용하는 경우 "all_proxy"를 설정한 Docker 17.03.1-ce를 사용한 테스트가 다음과 같이 수행되었습니다.

# Set up socks5 proxy server
ssh sshUser@proxyServer -C -N -g -D \
     proxyServerIp:9999 \
     -o ExitOnForwardFailure=yes \
     -o ServerAliveInterval=60

# Configure dockerd and restart.
# NOTICE: using "all_proxy"
mkdir -p /etc/systemd/system/docker.service.d
cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
[Service]
Environment="all_proxy=socks5://proxyServerIp:9999"
Environment="NO_PROXY=localhost,127.0.0.1,private.docker.registry.com"
EOF

systemctl daemon-reload
systemctl restart docker

# Test whether can pull images
docker run -it --rm alpine:3.5

도커 빌드에서 컬 문제를 해결하기 위해 도커 파일 안에 다음을 추가했습니다.

ENV http_proxy=http://infoprx2:8080
ENV https_proxy=http://infoprx2:8080
RUN apt-get update && apt-get install -y curl vim

ENV 문은 RUN 문 앞에 있습니다.

수 위해 합니다) 을 Docker에 했습니다./var/lib/boot2docker/profile:

export HTTP_PROXY=http://infoprx2:8080
export HTTPS_PROXY=http://infoprx2:8080

그런 다음 도커를 다시 시작했습니다.sudo /etc/init.d/docker restart.

프록시 설정을 구성하는 윈도우즈용 완벽한 솔루션입니다.

< user>:< password>@< proxy-host>:< proxy-port>

설정을 마우스 오른쪽 단추로 클릭하고 도커 아이콘을 클릭한 다음 프록시를 클릭하여 직접 구성할 수 있습니다.

여기서 프록시 주소, 포트, 사용자 이름 및 암호를 구성할 수 있습니다.

다음 형식으로:

< user>:< password>@< proxy-host>:< proxy-port>

예:

"geronimous:mypassword@192.168.44.55:8080"

이 이상은 아닙니다.

Ubuntu에 있는 경우 다음 명령을 실행해야 합니다.

export https_proxy=http://your_name:password@ip_proxy:port docker 

도커를 다시 로드하려면 다음을 수행합니다.

service docker.io restart

또는 로 이동/etc/docker.io나노로...

Ubuntu에 있는 경우 다음 명령을 실행하여 프록시를 추가합니다.

sudo nano /etc/default/docker

그리고 다음을 지정하는 줄의 주석을 제거합니다.

#export http_proxy = http://username:password@10.0.1.150:8050

적절한 프록시 서버 및 사용자 이름으로 대체합니다.

그런 다음 다음을 사용하여 도커를 다시 시작합니다.

service docker restart

이제 프록시 뒤에서 도커 명령을 실행할 수 있습니다.

docker search ubuntu

소문자 변수를 설정해야 할 수도 있습니다.이 경우 내 /etc/systemd/system/docker.service.d/http-proxy.conf 파일은 다음과 같습니다.

[Service]
Environment="ftp_proxy=http://<user>:<password>@<proxy_ip>:<proxy_port>/"
Environment="http_proxy=http://<user>:<password>@<proxy_ip>:<proxy_port>/"
Environment="https_proxy=http://<user>:<password>@<proxy_ip>:<proxy_port>/"

행운을 빌어요! :)

저는 또한 방화벽 뒤에서 같은 문제에 직면하고 있었습니다.다음 단계를 수행합니다.

$ sudo vim /etc/systemd/system/docker.service.d/http_proxy.conf
[Service]
Environment="HTTP_PROXY=http://username:password@IP:port/"

https_prxoy.conf 파일을 사용하거나 제거하지 마십시오.

도커 컨테이너를 다시 로드하고 다시 시작합니다.

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
$ docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:2557*********************************8
Status: Downloaded newer image for hello-world:latest

버전 1.0.1에서는 프록시 환경 변수를 설정하는 것만으로는 도움이 되지 않았습니다...▁the를 업데이트해야 했습니다./etc/default/docker.io파일에 "vmdk_mdk" 변수에 대한 올바른 값을 지정합니다.

도커 1.9.1이 설치된 Ubuntu 14.04(Trusty Tahr)에서, 나는 방금 언급을 해제했습니다.http_proxyline, 값을 업데이트한 다음 Docker 서비스를 다시 시작합니다.

export http_proxy="http://proxy.server.com:80"

그리고 나서.

service docker restart

환경 변수에서 프록시 제거

unset http_proxy
unset https_proxy
unset no_proxy

그런 다음 도커를 다시 시작합니다.

에서는 이 .6 사용 ).export):

/etc/sysconfig/computer

export http_proxy="http://myproxy.example.com:8080"
export https_proxy="http://myproxy.example.com:8080"

참고: 둘 다 사용할 수 있습니다.http의전.)

https://crondev.com/running-docker-behind-proxy/ 덕분입니다.

내 네트워크에서 Ubuntu는 기업 ISA 프록시 서버 뒤에서 작동합니다.그리고 인증이 필요합니다.위에 언급된 모든 해결책을 시도해 보았지만 아무 도움이 되지 않았습니다.이 된 은 파일에 이었습니다./etc/systemd/system/docker.service.d/https-proxy.conf도메인 이름 없이.

대신에

Environment="HTTP_PROXY=http://user@domain:password@proxy:8080"

또는

Environment="HTTP_PROXY=http://domain\user:password@proxy:8080"

그리고 다음과 같은 다른 대체품들.@ -> %40또는\ -> \\사용하려고 했습니다.

Environment="HTTP_PROXY=http://user:password@proxy:8080"

그리고 이제 작동합니다.

사용해 보십시오.

sudo HTTP_PROXY=http://<IP address of proxy server:port> docker -d & 

이 방법은 질문에 정확하게 답하지는 않지만 특히 서비스 파일을 처리하지 않으려는 경우 도움이 될 수 있습니다.

이미지를 호스트하는 경우 서버에서 다음과 같은 방법을 사용하여 이미지를 대신 tar 아카이브로 변환하는 방법이 있습니다.

docker save <image-name> --output <archive-name>.tar

아카이브를 다운로드하여 이미지로 되돌리기만 하면 됩니다.

docker load <archive-name>.tar

다음 단계를 수행하여 문제를 해결합니다.

1단계:sudo systemctl start docker

2단계:sudo systemctl enable docker
((으)로 가 생성되었습니다/etc/systemd/system/multi-user.target.wants/docker.service/usr/lib/systemd/system/docker.service.)

3단계:sudo systemctl status docker

4단계:sudo mkdir -p /etc/systemd/system/docker.service.d

5단계:sudo vi /etc/systemd/system/docker.service.d/proxy.conf

아래와 같이 프록시 설정

[Service]

Environment="HTTP_PROXY=http://proxy.server.com:80"

Environment="HTTPS_PROXY=http://proxy.server.com:80"

Environment="NO_PROXY=.proxy.server.com,*.proxy.server.com,localhost,127.0.0.1,::1"

6단계:sudo systemctl daemon-reload

7단계:sudo systemctl restart docker.service

8단계:vi /etc/environment and source /etc/environment

http_proxy=http://proxy.server.com:80
https_proxy=http://proxy.server.com:80
ftp_proxy=http://proxy.server.com:80
no_proxy=127.0.0.1,10.0.0.0/8,3.0.0.0/8,localhost,*.abc.com

프로젝트의 종속성과 개인 서버와의 통신에 필요한 API 요청을 위해 프록시를 사용해야 하는 등의 문제가 있었습니다.

RHEL7의 경우 시스템을 다음과 같이 구성했습니다.

/etc/sysconfig/sysloger 디렉토리로 이동했습니다.

Environment=http_proxy="http://ip:port"
Environment=https_proxy="http://ip:port"
Environment=no_proxy="hostname"

그런 다음 파일을 저장하고 다음 명령을 사용합니다.

sudo systemctl 다시 시작 도커

그런 다음 Docker 파일을 구성합니다. 먼저 환경 구조를 설정합니다.

ENV http_proxy http://ip:port
ENV https_proxy http://ip:port
ENV no_proxy "hostname"

그게 다야! :)

언급URL : https://stackoverflow.com/questions/23111631/cannot-download-docker-images-behind-a-proxy