Docker에 안전하지 않은 레지스트리 추가


107

CentOS에서 실행중인 도커 1.12가 있습니다. 안전하지 않은 레지스트리를 추가하려고하는데 문서에 언급 된 것이 작동하지 않습니다. 시스템이 사용 systemd하므로 /etc/systemd/system/docker.service.d/50-insecure-registry.conf파일을 만들었습니다 .

$ cat /etc/systemd/system/docker.service.d/50-insecure-registry.conf
[Service]
Environment='DOCKER_OPTS=--insecure-registry="hostname.cloudapp.net:5000"'

데몬을로드하고 docker 서비스를 다시 시작한 후 systemd는 환경 변수가 있음을 보여줍니다.

$ sudo systemctl show docker | grep Env
Environment=DOCKER_OPTS=--insecure-registry="hostname.cloudapp.net:5000"

하지만 실행할 때 docker info안전하지 않은 레지스트리가 추가 된 것을 볼 수 없습니다.

$ docker info
........
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
    127.0.0.0/8

hostaneme.cloudapp.net실패하는 이미지 푸시

Pushing application     (hostname.cloudapp.net:5000/application:latest)...
The push refers to a repository     [hostname.cloudapp.net:5000/mozart_application]
ERROR: Get https://hostname.cloudapp.net:5000/v1/_ping: http: server gave HTTP response to HTTPS client

할 수있는 일이 있습니까? 내가 뭔가를 놓치고 있습니까?

최신 정보

/etc/docker/daemon.json다음 콘텐츠가 포함 된 파일 을 추가하여 문제를 해결했습니다.

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

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

sudo systemctl daemon-reload
sudo systemctl restart docker

그 후 안전하지 않은 레지스트리가 hostname.cloudapp.net:500작동합니다.


4
누군가가이 경우에 당신을 이겼지 만 (당신에게 관대 한 유예 기간을 준 후), 이것은 자기 대답을위한 훌륭한 사례 였을 것입니다.
BlackVegetable

2
우수한! Openshift javamonamour.org/2017/12/docker-insecure-registry.html 을 사용하여 "oc cluster up"을 수행하는 동안이 오류 메시지가 표시되고 수정 사항이 해결되었습니다!
Pierluigi Vernetto

2
질문에서 CentOS와 관련하여 명시 적으로 요청한 것을 알고 있지만 여기에 내가 한 것처럼 macOS 솔루션을 찾는 사람에게는 이 질문대한 답변에서 언급했듯이 GUI를 통해 수행 할 수 있습니다 .
anotherdave

답변:


135

(질문의 답변 복사)

안전하지 않은 Docker 레지스트리를 추가 /etc/docker/daemon.json하려면 다음 내용 이 포함 된 파일 을 추가하십시오 .

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

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


3
나는 그것이 데비안과 같은 것에 대한 올바른 해결책이라고 믿습니다. Red Hat 좋아 /etc/sysconfig/docker하는 경우 옵션 중 하나로 추가하고 싶습니다 . 예를 들어 Openshift 설치에서 : OPTIONS='--insecure-registry=172.30.0.0/16 --others [...]' Suse와 같은 경우에는 모르겠습니다.
erikbwork 2011

DigitalOcean에서 1 클릭 Docker 이미지는 여전히 DOCKER_OPTS와 daemon.json파일 버전을 사용한다고 생각합니다 . 감사!
Eric Pugh

@erikbwork 기본 패키지 저장소의 Docker 1.13.1이있는 Fedora 28에서는 접근 방식이 /etc/docker/daemon.json잘 작동합니다.
anothernode

7
이 daemon.json을 만든 후 docker를 다시 시작할 수 없습니다 . Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. @matt
AATHITH RAJENDRAN

감사합니다. 작동합니다. se 포트 80 { "insecure-registries": [ "hostname.cloudapp.net"]} 때문에 포트가없는 경우
registries

16

/etc/docker/daemon.json 파일을 만들고 아래 내용을 추가 한 다음 CentOS 7에서 도커를 다시 시작하면 문제가 해결되었습니다.

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

12

솔루션 /etc/docker/daemon.json파일 은 Ubuntu에서 저에게 적합하지 않았습니다.

/etc/default/docker파일 의 Docker 데몬에 명령 줄 옵션을 제공하여 Ubuntu에서 Docker 안전하지 않은 레지스트리를 구성 할 수있었습니다 . 예 :

# /etc/default/docker    
DOCKER_OPTS="--insecure-registry=a.example.com --insecure-registry=b.example.com"

도커 이미지 및 볼륨 스토리지, 기본 DNS 서버 등에 대한 사용자 지정 디렉터리를 구성하는 데 동일한 방법을 사용할 수 있습니다.

이제 Docker 데몬이 다시 시작된 후 (실행 후 sudo service docker restart) running docker info은 다음과 같이 표시됩니다.

Insecure Registries:
  a.example.com
  b.example.com
  127.0.0.0/8

1

저에게 해결책은 여기에 레지스트리를 추가하는 것이 었습니다.

/ etc / sysconfig / docker-registries

DOCKER_REGISTRIES=''
DOCKER_EXTRA_REGISTRIES='--insecure-registry  b.example.com'

0

이미 config.json 파일이있는 경우 최종 파일은 다음과 같이 표시됩니다. 여기에 문제 registry.myprivate.com가있는 파일이 있습니다.

{ "auths": { "https://index.docker.io/v1/": { "auth": "xxxxxxxxxxxxxxxxxxxx==" }, "registry.myprivate.com": { "auth": "xxxxxxxxxxxxxxxxxxxx=" } }, "HttpHeaders": { "User-Agent": "Docker-Client/19.03.8 (linux)" }, "insecure-registries" : ["registry.myprivate.com"] }


0

Amazon Linux에서 로컬 내부 JFrog Docker Private Registry를 설정 한 후 비슷한 종류의 문제가 발생했습니다.

문제를 해결하기 위해 다음과 같이했습니다.

/ etc / sysconfig / docker 파일에서 OPTIONS 변수를 수정하여 "--insecure-registry xx.xx.xx.xx : 8081"을 추가했습니다.

OPTIONS="--default-ulimit nofile=1024:40961 --insecure-registry hostname:8081"

그런 다음 도커를 다시 시작했습니다.

그런 다음 다음을 사용하여 로컬 도커 레지스트리에 로그인 할 수있었습니다.

docker login -u admin -p password hostname:8081
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.