Docker container[2] Registry
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>