Docker를 1.12로 업데이트 한 후 이미지를 가져 오기 / 푸시 할 수 없음


86

개인 레지스트리는 도커 1.10.3을 기반으로 잘 작동했지만도 커가 1.12.0으로 업데이트 된 후에는 이미지를 가져 오거나 내릴 수 없습니다.

/ etc / sysconfig / docker를 다음과 같이 수정했습니다.

OPTIONS='--selinux-enabled=true --insecure-registry=myip:5000'

또는

OPTIONS='--selinux-enabled=true --insecure-registry myip:5000'

하지만 풀 / 푸시를 실행하면 다음 오류가 발생합니다.

$ docker pull myip:5000/cadvisor
Using default tag: latest
Error response from daemon: Get https://myip:5000/v1/_ping: http: server gave HTTP response to HTTPS client

도커를 1.10.3으로 되돌려도 다음과 같이 작동합니다.

$ docker pull myip:5000/cadvisor
Using default tag: latest
Trying to pull repository myip:5000/cadvisor ... 
latest: Pulling from myip:5000/cadvisor
09d0220f4043: Pull complete 
a3ed95caeb02: Pull complete 
151807d34af9: Pull complete 
14cd28dce332: Pull complete     
Digest:
sha256:33b6475cd5b7646b3748097af1224de3eee3ba7cf5105524d95c0cf135f59b47
Status: Downloaded newer image for myip/cadvisor:latest

일부 관련 정보는 다음과 같습니다.

docker version
Client:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built:

OS/Arch: linux/amd64

Server:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built:

OS/Arch: linux/amd64

docker info
Containers: 4
Running: 1
Paused: 0
Stopped: 3
Images: 241
Server Version: 1.12.0
Storage Driver: devicemapper
Pool Name: docker-253:0-6809-pool
Pool Blocksize: 65.54 kB
Base Device Size: 107.4 GB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 5.459 GB
Data Space Total: 107.4 GB
Data Space Available: 34.74 GB
Metadata Space Used: 9.912 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.138 GB
Thin Pool Minimum Free Space: 10.74 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
WARNING: Usage of loopback devices is strongly discouraged for production use. Use '--storage-opt dm.thinpooldev' to specify a custom block storage device.
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.107-RHEL7 (2016-06-09)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: host overlay null bridge
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-229.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 24
Total Memory: 62.39 GiB
Name: server_3
ID: TITS:BL4B:M5FE:CIRO:5SW6:TVIV:HW36:J7OS:WLHF:46T6:2RBA:WCNV
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 21
Goroutines: 32
System Time: 2016-08-02T10:33:06.414048675+08:00
EventsListeners: 0
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

docker exec <registry-container> registry -version
registry github.com/docker/distribution v2.2.1

디버그 모드에서 docker 데몬을 다시 시작한 후 문제를 재현 할 때 데몬 로그가 아래에 나열됩니다.

DEBU[0794] Calling POST /v1.24/images/create?fromImage=10.10.10.40%3A5000%2Fcadvisor&tag=latest 
DEBU[0794] hostDir: /etc/docker/certs.d/10.10.10.40:5000 
DEBU[0794] hostDir: /etc/docker/certs.d/10.10.10.40:5000 
DEBU[0794] Trying to pull 10.10.10.40:5000/cadvisor from https://10.10.10.40:5000 v2 
WARN[0794] Error getting v2 registry: Get https://10.10.10.40:5000/v2/: http: server gave HTTP response to HTTPS client 
ERRO[0794] Attempting next endpoint for pull after error: Get https://10.10.10.40:5000/v2/: http: server gave HTTP response to HTTPS client
DEBU[0794] Trying to pull 10.10.10.40:5000/cadvisor from https://10.10.10.40:5000 v1 
DEBU[0794] hostDir: /etc/docker/certs.d/10.10.10.40:5000
DEBU[0794] attempting v1 ping for registry endpoint https://10.10.10.40:5000/v1/
DEBU[0794] Fallback from error: Get https://10.10.10.40:5000/v1/_ping: http: server gave HTTP response to HTTPS client 
ERRO[0794] Attempting next endpoint for pull after error: Get https://10.10.10.40:5000/v1/_ping: http: server gave HTTP response to HTTPS client
ERRO[0794] Handler for POST /v1.24/images/create returned error: Get https://10.10.10.40:5000/v1/_ping: http: server gave HTTP response to HTTPS client 
DEBU[1201] clean 2 unused exec commands

또한 간단한 명령을 실행하여 테스트 용 개인 레지스트리를 시작합니다. 그 밖의 모든 것은 기본적으로 다음과 같습니다.

docker run -d -p 5000:5000 --restart=always --name registry -v 'pwd'/data:/var/lib/registry registry:2

프록시가 구성되지 않았습니다. 요약하면 테스트를위한 조용한 샘플 환경 일뿐입니다.


글쎄, 나도 같은 오류에 직면하지만 이상한 점은 RHEL 7에 / etc / sysconfig / docker 파일이 없다는 것입니다. 내가 찾을 수있는 유사한 파일을 알고 있습니까? 이 도커 파일의 내용은 무엇입니까? 감사합니다.
sai

이 파일에는 docker 데몬이 실행되는 방식을 변경하려는 경우 몇 가지 옵션이 포함되어 있습니다. 나는 RHEL7 나누었다에 정확한 경로를 모르는 경우 당신 간부 명령 당신은 어딘가에서 파일을 찾을 것입니다, "$가 고정 표시기의 위치를 sudo는"와
yuxiaoyu

결국 /etc/docker/daemon.json을 삭제하고 도커 서비스를 다시 시작했습니다. / etc / sysconfig / docker에서 설정 한 내용을 재정의 한 것처럼 보입니다
Max

맥 OS를 들어 사용자는이 대답을 참조하십시오 stackoverflow.com/a/39492340/706521
아드리안 Forsius

답변:


222

나는 같은 문제가 있었다.

이것은 나를 위해 도움이되었습니다.

  • 클라이언트 시스템에서 /etc/docker/daemon.json 생성 또는 수정

    { "insecure-registries":["myregistry.example.com:5000"] }

  • Docker 데몬 다시 시작

    sudo /etc/init.d/docker restart


7
제 경우에는 Ubuntu 16.04를 사용하고 / etc / default / docker (내 구성이 있었던 곳)는 upstart에만 해당됩니다. 16.04는 systemd를 사용합니다. /etc/docker/daemon.json은 플랫폼 독립적 구성입니다. github.com/docker/docker/issues/23512 github.com/docker/docker/issues/23228
bojtib

1
여기에서 설정하는 방법에 안전하지 않은 레지스트리에 문서입니다 docs.docker.com/registry/insecure은
이바 일로 Bardarov

6
/etc/docker/daemon.json없는 경우 파일을 만듭니다 . 특정Ubuntu 16.04
deepdive

누구든지 MacOS에 대한 정보가 있습니까?
Adrian Forsius

도커 V17.x를 설치할 때 도움이되었습니다. 내가 docker.io v1.x했을 때 그것은 어떻게 든 일을하지 않았다
node_man

24

Windows 사용자의 경우

여기에 로컬 레지스트리를 추가하고 적용하십시오.

여기에 이미지 설명 입력


7

Mac 사용자의 경우 : 상단 표시 줄의 (docker) 아이콘을 사용하여 Docker 환경 설정 업데이트

환경 설정-> 데몬-> 안전하지 않은 레지스트리 [(+) 기호 클릭]-> : port 추가

하단의 "적용 및 다시 시작"버튼을 누르십시오.

Docker 환경 설정 창을 보여주는 그림


6

나는 또한 같은 문제가 있었고 아래 단계를 따랐다.

1. 파일 생성

 vi /etc/docker/daemon.json

2. 아래 내용 추가

{
        "insecure-registries":["192.168.1.142:5000"]
 }

3. Docker 다시 시작

service docker restart

3

Windows를 사용 중이고이 오류가 발생하면 여기에서 파일을 만들어야합니다. "C:\ProgramData\docker\config\daemon.json"

위에서 언급 한 @Bspec과 동일하게 수행합니다.

{ "안전하지 않은 레지스트리": [ "myregistry.example.com:5000"]}

그런 다음 PowerShell 명령을 사용하여 Docker를 다시 시작합니다.

Stop-Service docker
Start-Service docker

2

"/etc/docker/daemon.json"수정이 저에게 효과가 없었습니다.

아래와 같이 "/ etc / sysconfig / docker"아래에두면 작동합니다.

INSECURE_REGISTRY = "-안전하지 않은 레지스트리 192.168.24.1:8787"


--insecure-registry옵션 을 보여 주셔서 감사합니다 . 제 경우에는 /etc/systemd/system/docker.service.d/docker-options.confKubespray를 사용하고 있기 때문에 다른 파일 이었습니다. 따라서 다른 사람들에게는 DOCKER_OPTS매개 변수 를 찾아야합니다 . 이 검색을 사용하십시오 : grep -ER DOCKER_OPTS /etc전체 /etc디렉토리. 내 특정한 경우에는 설정을 효과적으로 만들기 위해 systemctl daemon-reload, systemctl restart docker그리고 ps -ef | grep dockerdUbuntu에서 수행했습니다.
laimison

1

위해 푸시에 , 클라이언트 측에서 안전하지 않은 레지스트리에 IP를 추가 (예 : Windows의 경우)

여기에 이미지 설명 입력

을 가져 오려면 서버 측 (이 경우 Ubuntu)에 추가합니다.

vim /etc/docker/daemon.json

여기에 이미지 설명 입력

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


0

Ubuntu 18.04에서 작동하는 솔루션이 없으므로 근본 원인을 찾는 데 시간을 할애하십시오.

문제 해결 단계

sudo vi /lib/systemd/system/docker.service
# ExecStart=dockerd .... --insecure-registry=192.168.99.100:5000
sudo systemctl stop docker.service
sudo systemctl daemon-reload
sudo systemctl start docker.service

무엇이 문제였습니까?

dockerdLinux 배포에 관계없이 정확히 어디에서 옵션이 구성 되어 있는지 확인하는 것이 좋습니다 .

sudo find /etc /lib -name 'docker*' | while read -r line; do grep dockerd $line /dev/null; done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.