docker pull registry
docker pull hyper/docker-registry-web
다음 두 개의 이미지를 다운 받자
이를 이용해 사설 저장소를 만들어보자
public registry : docker hub - 불특정 다수가 접속할 수 있는 공간이고, 모든 사용자가 회원 가입을 통해 이미지를 push 할 수 있다. pull 은 로그인을 하지 않으면, Ip 별로 하루에 100개 받을 수 있다
- 로그인 정보가 있다면, 도커 허브에 접속시 config.json 에 있는 정보를 먼저 보내서 인증 정보를 확인 받는다
- 로그인 정보가 있다면, Ip 가 아닌 사용자별로 100개를 받을 수 있다
private registry : 특정 사용자 / 그룹 사용자만 접속할 수 있다. private registry 에 로그인 할 때는 ' docker login 주소 ' 를 입력해야 한다
local registry : 사용자만 사용한다. 컨테이너 생성시 1차적으로 local registry 를 검색한다
- version 1 : python 으로 제작
- version 2 : go 로 제작 ( 일반적으로 version 2 사용 )
docker container run -d -p 5000:5000 --restart=always -name registry -v /home/rapa/registry:/var/lib/registry registry
docker tag centos:7 localhost:5000/mycentos:1.0
docker push localhost:5000/mycentos:1.0
registry에 업로드 시켜주자
원래라면, push 할 때 docker 에서 해당 주소에 대해 인증 정보가 있는지 확인한다. 만약 image push 명령을 내리면, 먼저 사용자의 docker 에서 config.json 을 보고, 주소에 대한 인증 정보를 조회하고, 인증 정보가 있다면, push 를 수행한다
curl -XGET localhost:5000/v2/_catalog
P. 214
docker run -d -p 8080:8080 --name registry-web --link registry:private -e REGISTRY_URL=http://211.183.3.136:5000/v2 -e REGISTRY_NAME=211.183.3.136:5000 --restart=always hyper/docker-registry-web
docker pull localhost:5000/mycentos:1.0
- 로컬에서 원격지에 있는 사설 저장소로 접속하기 위해서는 사설 저장소에 인증 정보를 전달해야 한다. 인증 정보는 config.json 파일에서 확인 한다
- 단, 인증 정보가 없다면 해당 접근을 차단시킨다
- insecure-registry 는 인증 정보가 없어도 접속하도록 허용하는 설정이다
- 만약, 로그인을 하면, 인증 결과는 config.json 에 저장된다
- 원래라면, push 할 때 docker 에서 해당 주소에 대해 인증 정보가 있는지 확인한다. 만약 image push 명령을 내리면, 먼저 사용자의 docker 에서 config.json 을 보고, 주소에 대한 인증 정보가 등록되어있는지 조회하고, 인증 정보가 있다면, push 를 수행한다. 이 인증 정보는 로그인을 통해 생성된다
- 허나, 지금 우리는 docker login 을 하지 않고, 원격지 registry 에 접속하고자 하므로, 해당 주소에 대해 인증 정보가 없어도 접속을 할 수 있게 설정해준 것이다
- insecure 설정은 클라이언트에서 하는 것이다
참조 ) https://velog.io/@tkfrn4799/harbor-private-docker-registry
안녕하세요! 최근에 클라우드 공부를 시작한 학생입니다. insecure-registry 설정하면 인증 없이 어떻게 접속이 되는지 궁금했었는데 덕분에 잘 이해하고 갑니다👍 공부하면서 궁금한 것들이 있으면 자주 들릴께요!