이미지가 저장된 도커에서 운영하는 저장소이다.
Official images
: 도커에서 직접 관리하는 이미지들Verified publisher
: 벤더가 제공해주는 컨테이너 이미지들Sponsored OSS
: 도커에서 지원하고 있는 오픈소스 프로젝트
registry
컨테이너를 이용해private
한 컨테이너 이미지 저장소 운영
$ sudo docker run -d -p 5000:5000 --restart always --name registry registry:2
registry
이미지가 없어 새로운 이미지인 registry:2
를 다운받는다
ubuntu:18.04
:docker hub
가 관리하는repository
jbro321/ubuntu:18.04
:jbro321
이 관리하는repository
localhost:5000/ubuntu:18.04
:localhost:5000
이 관리하는repository
$ docker tag jbro321/webserver:v1 localhost:5000/webserver:v1
localhost:5000
이 아닌경우 {ip}:{port}
ex) 192.168.0.20:5000
컨테이너 저장 위치로 이동
$ cd /var/lib/docker/volumes/{Container ID}/_data/
$ cd docker/registry/v2/repositories/
$ ls로 확인시, {이미지명}이 보인다
$ cd /var/lib/docker/volumes/{Container ID}/_data/
$ cd /docker/registry/v2/repositories/
$ ls로 확인시, webserver가 보인다
private registry
에서push
혹은pull
방법
http
로 접속하는 방법이다.
- 추후에 http 접근 말고 https 접근 방법 구축해볼 예정
pull
혹은push
를 하려고 할 경우,https
로 설정되어 있지 않은 경우, 에러가 발생합니다.
따라서,docker daemon.json
을 수정해줘야 합니다.
push
혹은 pull
하려는 서버에 접속daemon.json
파일 생성하여 ip
설정$ vim /etc/docker/daemon.json
설정private repository
가 저장된 IP
설정 ex) 222.111.222.111:7050
{
"insecure-registries":["222.111.222.111:7050"]
}
daemon.json
저장 후 docker
데몬 재시작$ sudo systemctl restart docker
docker image push
docker image push localhost:5000/my-app:1.0
private registry
에서는search
사용이 불가능하다.
따라서, 다른 방법으로 리스트를 가져옵니다.
# 전체 이미지 목록 가져오기
curl -X GET http://<registry-host>/v2/_catalog
# 특정 태그 목록 가져오기
curl -X GET http://<registry-host>/v2/<repository-name>/tags/list
# 전체 이미지 목록 가져오기
curl -X GET http://222.111.222.111:7050/v2/_catalog
# 특정 태그 목록 가져오기
curl -X GET http://222.111.222.111:7050/v2/nginx/tags/list