본문 바로가기
프로그래밍 놀이터/Settings

[Docker] Docker 이미지 공개

by 돼지왕 왕돼지 2020. 3. 25.
반응형

[Docker] Docker 이미지 공개


-

Docker 이미지를 공유하는 장치를 제공하는 것이 Docker 레지스트리이다.





6.1. Docker 이미지의 자동 생성 및 공개


-

Dockerfile 을 GitHub 등에서 관리하고 Docker Hub 와 연결하면 Dockerfile 로부터 자동으로 Docker 이미지를 생성하고 공개할 수 있다.




* Automated Build 의 흐름


-

Docker Hub 에는 버전 관리 툴인 GitHub 및 BitBucket 과 연결하여 Dockerfile 로부터 Docker 이미지를 자동으로 생성하는 Automated Build 기능이 있다.

이는 GitHub 나 BitBucket 에 있는 Dockerfile 을 바탕으로 Docker 이미지를 자동으로 빌드하는 기능이다.




* GitHub 에 공개하기




* Docker Hub 의 링크 설정


-

Docker Hub 에 로그인하고, [Settings] - [Linked Accounts & Services] 에서 [Link GitHub] 를 한다.




* Dockerfile 의 빌드


-

Docker Hub 에 로그인 상태에서 [Create] - [Create Automated Build]

Repository Namespace & Name, Visibility, Short Description 등을 채워넣고, 빌드




* Docker 이미지 확인





6.2. Docker Registry 를 사용한 프라이빗 레지스트리 구축


* 로컬 환경에 Docker 레지스트리 구축하기


-

Docker 레지스트리를 프라이빗 네트워크 안에서 구축하려면 Docker Store 에 공개되어 있는 공식 이미지인 'registry'를 사용한다.

Version 0 계열과 Version 2 계열이 있는데, 0 계열은 Python, 2 계열은 Go 언어로 구축되어 있다.

이 둘은 호환성이 없으므로 주의해야 하고, 특별한 요구사항이 없다면 2 계열을 이용하는 것이 좋다.


레지스트리는 5000 port 를 사용한다.




* Docker 이미지 업로드


-

프라이빗 네트워크 안의 Docker 레지스트리에 업로드하려면 다음과 먼저 tag 를 붙여주어야 한다.


syntax)

$ docker image tag [로컬의 이미지명] [업로드할 레지스트리의 주소:포트 번호]/[이미지명]


ex)

$ docker image tag docker-science localhost:5000/docker-jupyter



-

그 다음 push 를 통해 업로드한다.

ex)

$ docker image push localhost:5000/docker-jupyter




* Docker 이미지의 다운로드와 작동 확인


-

ex)

$ docker image pull localhost:5000/docker-jupyter



-

주의할 점은 프라이빗 레지스트리에서는 Docker 이미지를 영구 데이터로 관리할 필요가 있다.

데이터 관리를 위해 신뢰성 높고 용량이 충분한 스토리지가 필요하고,

장애에 대비해 다중화 구성도 필요하며,

정기적 데이터 백업이나 서버 감시 같은 운용도 필요하다.





6.3. 클라우스 서비스를 사용한 프라이빗 레지스트리 구축


-

퍼블릭 클라우드에는 Docker 이미지를 프라이빗으로 관리할 수 있는 매니지드 서비스가 제공되므로 이것을 이용하는 것이 좋다.

Google Cloud Platform(GCP) 는 Google Container Registry 를 제공한다.

이 서비스는 GCP 의 오브젝트 스토리지 서비스인 Google Cloud Storage 를 사용한다.




* Google Container Registry 준비하기




* Docker 이미지의 업로드


-

다음과 같은 규칙으로 태그를 붙인다.

syntax)

$ docker tag [로컬 이미지명] [Google Container Registry 의 호스트명]/[프로젝트 ID]/[이미지명]



-

이미지 업로드는 다음과 같이 한다.

syntax)

$ gcloud docker -- push <imageName]




* Docker 이미지의 다운로드와 작동 확인


-

syntax)

$ gcloud docker -- pull <imageName>



-

Raspberry Pi (라즈베리 파이) 에서도 Docker 를 작동시킬 수 있다.

단, ARM 프로세서이므로 x86 프로세서용 Docker 이미지는 사용할 수 없다.

라즈베리 파이에서 이용할 수 있는 이미지는 rpi- 라는 이름이 붙어 있다.




반응형

댓글