구리의 창고

Docker - v1 registry 접속 실패 404 Not Found (disable-legacy-registry) 본문

DevOps

Docker - v1 registry 접속 실패 404 Not Found (disable-legacy-registry)

구리z 2017. 9. 25. 16:32

머리글

docker-ce 17.06 버전부터 Registry V1과 통신이이 기본으로 막혀있다. deprecated 예정이지만 꼭 사용해야 하는 시스템이 있으면 이 옵션을 강제로 활성화 시킬 수 있다. 이 글에서 Docker Registry 주소를 http://127.0.0.1:5000 이라고 가정하겠다.

문제점

이 문제가 발생하면 아래처럼 기본적으로 404 Not Found 에러가난다. 에러메시지가 좀 더 도움이 되면 좋겠지만 그렇지않다.
Error response from daemon: login attempt to http://127.0.0.1:5000/v2/ failed with status: 404 Not Found
Docker API Version v1.12.0부터 기본으로 V1 사용이 비활성화되었는데, 이 버전은 Docker 버전과 다르다. docker version 명령어로 관련된 정보를 모두 확인 할 수 있다.
$ docker version
Client:
 Version:      17.03.2-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   f5ec1e2
 Built:        Tue Jun 27 03:11:13 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.03.2-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   f5ec1e2
 Built:        Tue Jun 27 03:11:13 2017
 OS/Arch:      linux/amd64
 Experimental: false

방법1

사실 공식홈페이지 문서에도 잘 나와있지만 매번 찾는게 생각보다 어려워서 블로그에 옮겨적는다. docker pull/push/login 명령어에 --disable-legacy-registry=false를 옵션으로 넣고 실행하면된다.
$ docker login 127.0.0.1:5000 --disable-legacy-registry=false

방법2

방법1로 하면 매번 옵션을 추가해줘야하는 불편함이 있다. 아예 docker 데몬이 실행 될 때 설정에 추가하는 법도 있다.
{
  "disable-legacy-registry":false
}


Comments