
많이들 docker hub를 통해 이미지를 올리고 해당 이미지를 통해 배포한다. private 이미지에 제한이 있는 docker hub를 사용하기 보단 Registry를 사용하고자 했다.
Private Registry, Container Registry로 말할 수 있는 Private Registry는 나만의 docker hub와 비슷하다.
NCP Container Registry
Object Storage를 사용해야 해서 패스~
서버에 직접 Container Registry 구축
배포할 서버 또는 내가 원하는 위치에 직접 Container Registry를 구축할 수 있다.
docker image pull registry
docker run -d -p 5000:5000 --name registry registry
원하는 곳에서 이렇게 설정한뒤 해당 주소의 5000번 포트로 접속 docker push를 통해 사용 가능하다.
하지만 대부분의 클라우드 서비스는 각자의 Container Registry를 지원하고 이를 사용하고자 한다.
gitlab Container Registry
Gitlab을 통해 협업을 진행하고 있으며 문서가 친절히 구성되어 있어 Gitlab의 Container Registry를 사용하기로 했다.
각 Repository에 Deploy/Container Registry로 이동하면 현재 Container Registry를 확인할 수 있다.


여기서 docker login을 진행해야 한다. CLI에서 진행한다면 ID/PW를 통해 로그인 하면 되지만 gitlab-ci를 통해야 하므로 다른 로그인 방법을 하고자 한다.
로그인 방법은 4가지가 있다.
이 중 Deploy token을 사용하여 로그인을 진행하였다.
원하는 Repository로 이동하여 Settings/Repository/Deploy tokens로 이동 Expand 후 add Token을 통해 Deploy Token을 발급한다.

성공하게 되면 아래와 같이 나온다.

이렇게 나온 username과 password는 Gitlab CI/CD Variables에 저장한다. registry주소의 경우 위에 나왔던 Gitlab Container Register주소로 registry.gitlab.com/사용자명/리포지토리명과 같은 형식이다.


이렇게 저장한 값을 사용하여 docker login을 진행할 수 있다.
docker login -u $REGISTRY_USER -p $REGISTRY_PASSWORD $REGISTRY
로컬에서 로그인 할때는 그냥 해도 된다.
docker login registry.gitlab.com