Index
- Docker
- Container Orchestration
- Provisioning
목표
지금까지 Docker에 대한 개념과 Container 구동방법 그리고 Image를 만드는 방법등을 살펴봤습니다.
이번엔 생성한 Image를 저장하고 저장된 Image를 원격에서 Pull받아서 사용할 수 있는 저장소에 대해 알아보겠습니다.
- Docker Hub
- GitLab Container Registry
- Docker Registry
여기서는 Docker Hub 와 GitLab Container Registry 에 대해 알아보겠습니다.
참고로 저희는 GitLab Container Registry 사용하는 방향으로 셋팅중 입니다.
1. Docker Hub
Docker Hub는 컨테이너 이미지를위한 세계 최대의 라이브러리 및 커뮤니티입니다.
Docker에서 공식으로 지원하는 Repositry로 공개 Image저장소 이기도 합니다.
물론 약간(?) 의 비용을 지불하면 private Repository를 사용 할 수 있습니다.
Docker Hub에서 private Repository를 만들어 보겠습니다.
1.1 Repository 생성
- Repository 명칭을 적습니다. (broker-api로 하겠습니다.)
- Repository 는 Private으로 생성하겠습니다.
- Autobuild 가 지원이 됩니다. (GitHub, Bitbucket)
- GitHub과 Bitbucket를 사용하기 않기 때문에 다루지 않겠습니다.
정상적으로 Repository 가 생성된 것을 확인 할 수 있습니다.
1.2 Image Push
생성된 Docker Hub Repository 에 Image Push를 해보겠습니다.
- docker login 명령어로 docker hub 계정로그인을 진행합니다.
- docker pull 명령어로 생성된 이미지를 docker hub에 pull 합니다.
1
2sudo docker login
sudo docker push thinkub/broker-api:0.0.1
정상적으로 pull이 되었는지 확인해봅니다.
1.3 Image pull
- Docker Hub Repository에 있는 Image를 pull 받아보겠습니다.
생성한 Repository 는 private Repository이기 때문에 docker login 이후에 pull을 받을 수 있습니다.
2. GitLab Container Registry
GitLab에서도 Container Registry라는 Docker Image 저장소를 제공하고 있습니다.
GitLab 설치시 Default 설정이 되지 않으므로 활성화를 해야 합니다.
관련 문서는 이곳 을 참고해주세요.
컨테이너 레지스트리는 기본적으로 HTTPS에서 작동합니다. HTTPS 설정을 선행한 후 진행해주세요
해당 문서는 gitlab이 이미 설치된 상태에서의 작업입니다.
2.1 Registry Container 활성화
/etc/gitlab/gitlab.rb 설정파일을 수정합니다.
1
2
3
4
5
6
7
8
9
10
11
12# registry 에서 사용하는 주소로 gitlab주소에서 8929 Port를 사용하도록 설정
# port는 필요에의해서 변경 할 수 있음.
registry_external_url 'https://....:8929'
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"
registry['enable'] = true
registry['registry_http_addr'] = "localhost:5001"
registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/Wildcard.ziny.us.crt"
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/Wildcard.ziny.us.key"gitlab 재설정
1
gitlab-ctl reconfigure
Container Registry 접속 확인
2.2 Container Registry 접근
활성화 된 Registry 에 접근해 보겠습니다.
1 | sudo docker login [url]:[port] |
certificate signed by unknown authority
라는 오류가 발생합니다.
Docker hostname을 port와 같이 사용하는경우 어떤 인증서를 사용해야할지 추측하지 않습니다.
이를 위해서 /etc/docker/certs.d/{hostname:port}/
폴더를 생성한 후 해당 폴더에 인증서를 저장해두어야 합니다.
gitlab인증서를 복사합니다.
gitlab container registry login 해봅니다.
2.3 Container Registry 에 Image push 해보기
- 기존에 생성된 broker-api 를 push 해볼 예정입니다.
- container registry project 에 맞게 tag 작업을 합니다. (tag 규칙은 아래와 같습니다)
1
2
3
4
5[HOST_NAME]/[PROJECT_NAME]:[TAG] 또는
[HOST_NAME]/[GROUP_NAME]/[PROJECT_NAME]:[TAG]
ex)
sudo docker tag broker-api [url]:[port]/ai-labs-aip/broker-api:0.0.1 - push 명령어는 다음과 같습니다.
1
docker push [url]:[port]/ai-labs-aip/broker-api
- 정상적으로 Push 된지 확인해 봅니다.
2.4 Container Registry에서 Image Pull 받아서 Container 구동해보기
- Container Registry 에서 Image 를 받아보겠습니다.
1
sudo docker pull [url]:[port]/ai-labs-aip/broker-api:0.0.1
- Pull 받은 Image로 Container를 구동해보겠습니다.
- 접속 확인