인프라/Docker

Docker container[2] Registry

yo_onHJ 2020. 7. 22. 11:36

Docker Registry

Docker Registry : 도커 이미지 저장소 서버

$ docker pull/push   // 이미지 download/upload

-> 이를 이용하여 서버 구축에 필요한 이미지를 도커 허브를 통해 다운로드 (기본 registry : docker hub)

  • public repository : 개수 제한 없이 무료
  • private repository : 1개까지 무료

 

Docker Resistry (개인 저장소) 구축

 

Docker Hub(public)      ----->       Docker Registry Container (-> /registry)          <----      docker pull/push

                                             (Local Docker Registry Server)

 

 

 

1.  public repository 사용

일단 도커허브에 자기의 이미지를 올려야겠죠 ?

 

push할 이미지에 tag 설정 -> 자신이 올리려는 이미지를 찾기 쉽게 하기 위해서 

(아래 명령을 설명하자면, 이미지 test를 web이라고 태그를 한 뒤 내 repository의 id(login_ID)의 test라는 디렉터리에 web을 저장하는 것(이때 test라는 디렉터리가 도커 허브에 없다면 자동으로 생성되면서 그 안에 저장)

 

옵션. -a : 만든이

       -m : log message

$ docker tag test:web login_ID/test:web

 

이미지를 registry server에 push 

(docker hub와 같은 로그인을 진행 후, push할 내 repository의 test 디렉터리에 web을 저장시킵니다!)

$ docker login
$ docker push login_ID/test:web

Dockerhub 를 통한 데이터 공유 <public>

 

1. ex1 컨테이너에 접속한다. (접속되면 존재함 인정)

2. 변경된 컨테이너의 이미지 생성

↑ yhj라는 이름과 add project.txt라는 로그 메시지를 가지고 컨테이너 ex1에 vol1:my라는 이미지를 생성합니다! 

제 로그인id/web1(repositories):my1 라고 tag를 달아줍니다! -> 어느 저장소로 갈지 경로를  설정하는 작업

(이때 vol1:my와 제 로그인 id/web1:my1 라는 이미지 두개가 생성됩니다! 이 둘의 관계는 하드링크 개념과 유사)

그 다음 도커 허브의 로그인과 동일한 로그인을 진행합니다!

↑ 아직 도커 허브에는 올라와있지 않습니다!! 이미지만 하나 더 만든 것 뿐! 

도커 허브에 올라오려면 3번 작업을 진행하면 됩니다 :)

 

 

3, push로 이미지를 나의 도커 허브에 올리기

↑ 저의 도커 허브에는 web1이라는 저장소가 없기 때문에 자동적으로 새로 생성되면서 해당 저장소에 작업을 진행합니다! (my1이라는 태그로)

다시 확인해보시면 web1이라는 저장소가 생긴 것을 확인할 수 있습니다!! 


상대방의 이미지도 가져오는 방법을 알아볼까요?

 

새로운 컨테이너를 만들어 상대방 이미지를 u-web 이름으로 새로 생성합니다.

포트는 2000 지정하였습니다.

결과는, 자신의 ip 주소:2000 을 웹에서 확인해보면 상대방의 이미지를 확인할 수 있습니다. :)

 

 

그렇다면 내 것을 가져와서 열 수도 있겠죠?! 

$ docker run -d -p 3000:80 내 id/web1:my1 을 통해 위와 동일하게 제 이미지를 확인할 수 있습니다. 


2. private repository 사용

$ docker pull <registry_server_ip>:5000/<test>:<env>