[Docker] 도커 저장소, 사설 저장소 실습

Hoon·2022년 8월 27일
0

Docker

목록 보기
5/13

실습하기에 앞서 이미지 저장소 개념을 훑고 간다.

이미지 저장소(먼저 인증 정보를 보내야 한다)

  • public: docker hub. 불특정 다수가 접속할 수 있는 공간이고 회원가입을 통해 이미지를 push 할 수 있다. pull 은 로그인이 없다면 IP 별로 하루에 100개 받을 수 있다. 로그인 정보가 있다면 도커 허브에 접속시 config.json 에 있는 정보를 먼저 보내서 인증정보를 확인 받는다. 로그인 정보가 있다면 IP가 아닌 사용자별로 100개를 받을 수 있다.
  • private: 특정 사용자/그룹 사용자만 접속할 수 있다.
    docker login https://10.10.10.10
  • local: 나만 사용한다. 컨테이너 생성시 1차적으로 로컬 저장소를 검색한다.

사설 저장소

  • private-registry(이미지)를 이용하여 구축가능하다. 컨테이너로 배포하여 사용가능
    version1: python
    version2: go (일반적으로 version2 사용)
docker container run -d -p 5000:5000 --restart=always --name registry -v /home/rapa/registry:/var/lib/registry registry

일반적으로 이미지의 이름은 아래와 같은 형식을 취해야 한다
1. public
-> gildong/myweb:1.0 -> push(인증정보 확인) 로그인 docker login
2. private
-> reg.test.com:5000/myweb:1.0 -> push(인증정보 확인) 로그인 docker login https://10.10.10.10
또는
-> 192.168.1.101:5000/myweb:1.0 -> push(인증정보 확인)
3. local
-> myweb:1.0 [repository name]:[tag]

[실습] 사설 저장소 만들기

사설저장소는 private-registry image를 이용해 구축한다. 공식문서

rapa@rapa:~/0819/board$ curl -XGET localhost:5000/v2/_catalog
{"repositories":["mycentos"]}
rapa@rapa:~/0819/board$ 
[설정 예]
docker container run -d -p 5000:5000 --restart=always --name registry -v /home/rapa/registry:/var/lib/registry registry
docker run -d -p 8080:8080 --name registry-web \
--link registry:private -e REGISTRY_URL=http://211.183.3.126:5000/v2 \
-e REGISTRY_NAME=211.183.3.126:5000 --restart=always hyper/docker-registry-web
http://211.183.3.126:8080

결과

확인

docker image rm localhost:5000/mycentos:1.0 #로컬 저장소에 있는 이미지 삭제
docker pull localhost:5000/mycentos:1.0 # 사설 저장소에서 이미지 pull 하기

[실습] 옆 사람 사설저장소에 이미지 push

들어가기전에 network를 bridge로 변경
옆 사람이 이미지 push 하기 위해 내 사설 저장소 생성
docker container run -d -p 5000:5000 --restart=always --name registry -v /home/rapa/registry:/var/lib/registry registry

docker run -d -p 8080:8080 --name registry-web \
--link registry:private -e REGISTRY_URL=http://IP/v2 \
-e REGISTRY_NAME=IP:5000 --restart=always hyper/docker-registry-web
옆 사람 IP에 들어가기 위한 설정. 도커 데몬에 해당 IP로의 접속은 insecure해도 된다는 뜻
sudo vi /etc/init.d/docker
DOCKER_OPTS=--insecure-registry [IP:port] <- 옆사람 IP
sudo vi /etc/docker/daemon.json
{"insecure-registries":"[IP:port]"}
  • --insecure-registry: 편하지만 보안상 좋지 않음. 로컬에서 원격지에 있는 사설 저장소로 접속하기 위해서는 사설 저장소에 (인증정보)를 전달해야 한다. 인증정보는 config.json 파일에서 확인한다. 단, 없다면 해당 접근을 차단시킨다. --insecure-registry는 인증 정보가 없어도 접속을 허용한다는 것

의문점: 왜 보내는 곳 ip를 내가 설정해주면 받는 저장소는 모든것을 수용하는가?
기본적으로 사설저장소는 들어오는 이미지에 대한 인증 정보가 셋팅되어 있지 않다.
내 도커 데몬은 인증정보가 있는지 확인하는 친구. 도커 데몬이 config.json에 등록되 있는지 확인.

Reference

0개의 댓글