Docker Hub 사용하기

이재홍 http://www.pyrasis.com 2014.08.02 ~ 2014.09.20

Docker Hub Automated Build 활용하기

Docker Hub는 GitHub과 BitBucket을 연동하여 이미지를 자동 빌드하는 기능을 제공합니다.

이 책에서는 GitHub을 기준으로 설명하겠습니다. 먼저 GitHub에서 Dockerfile을 저장할 저장소부터 생성합니다.

웹 브라우저에서 GitHub(http://github.com)로 이동한 뒤 + → New repository를 클릭합니다.


그림 13-9 GitHub 저장소 생성

Repository name에 example-nginx2를 입력한 뒤 Create repository 버튼을 클릭합니다.


그림 13-10 GitHub 저장소 생성

GitHub 저장소 생성이 완료되었습니다. 저장소 주소는 git@github.com:<GitHub 사용자 계정>/example-nginx2.git 형식입니다.


그림 13-11 GitHub 저장소 생성 완료

Docker Hub(https://hub.docker.com)로 이동한 뒤 위쪽 Add Repository → Automated Build를 클릭합니다.


그림 13-12 Docker Hub Automated Build 생성

GitHub과 BitBucket을 사용할 수 있습니다. 앞에서 GitHub 저장소를 생성하였으므로 GitHub의 Select 버튼을 클릭합니다.


그림 13-13 Docker Hub Automated Build 소스 저장소 사이트 선택

GitHub 연결 설정입니다. Public and Private의 Select 버튼을 클릭합니다.

  • Public and Private: 공개, 개인 저장소와 개인 조직(Organization)을 사용할 수 있고, Service Hook이 자동으로 설정됩니다.
  • Limited: 공개 저장소와 조직만 사용할 수 있고, 각종 설정은 수동으로 해야 합니다.
    그림 13-14 Docker Hub Automated Build GitHub 연결 설정

GitHub에 로그인이 되어 있지 않다면 로그인 화면이 표시됩니다. GitHub 계정으로 로그인합니다. GitHub 계정이 없다면 가입부터 합니다(GitHub 가입 방법은 따로 설명하지 않겠습니다).


그림 13-15 GitHub에 로그인

Docker Hub가 GitHub 저장소에 접근할 수 있도록 권한을 부여합니다. Authorize application 버튼을 클릭합니다.


그림 13-16 GitHub에서 Docker Hub 권한 부여

다시 Docker Hub로 돌아왔습니다. 방금 GitHub에서 만든 example-nginx2 저장소의 Select 버튼을 클릭합니다.


그림 13-17 GitHub 저장소 선택

Docker Hub 저장소를 생성합니다. 기본값 그대로 사용하고 Create Repository 버튼을 클릭합니다.


그림 13-18 Docker Hub 저장소 생성

Docker Hub 저장소 생성이 완료되었습니다.


그림 13-19 Docker Hub 저장소 생성 완료

앞에서 만든 GitHub 저장소를 받은 뒤 저장소 디렉터리로 이동합니다.

~$ git clone git@github.com:<GitHub 사용자 계정>/example-nginx2.git
~$ cd example-nginx2

다음 내용을 Git 저장소 디렉터리에 Dockerfile로 저장합니다.

~/example-nginx2/Dockerfile

FROM ubuntu:14.04
MAINTAINER Foo Bar <exampleuser@example.com>

RUN apt-get update
RUN apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx

VOLUME ["/data", "/etc/nginx/site-enabled", "/var/log/nginx"]

WORKDIR /etc/nginx

CMD ["nginx"]

EXPOSE 80
EXPOSE 443

Git 저장소에 커밋한 뒤 GitHub에 Push합니다.

~/example-nginx2$ git add Dockerfile
~/example-nginx2$ git commit -m "add Dockerfile"
~/example-nginx2$ git push orign master

웹 브라우저에서 Docker Hub example-nginx2 저장소 페이지로 이동합니다. Build Details 탭을 클릭하면 방금 push한 Dockerfile이 빌드 중으로 표시됩니다.
https://registry.hub.docker.com/u//example-nginx2


그림 13-20 Docker Hub Automated Build 동작 중

잠시 기다리면 Status가 Finished로 바뀝니다. 이제 GitHub에 커밋할 때마다 Docker Hub에 새 이미지가 생성됩니다.

이번에는 Git 태그와 Docker 이미지 태그를 설정해보겠습니다. 먼저 Git 저장소에서 태그를 설정한 뒤 태그를 Push합니다.

~/example-nginx2$ git tag -a 0.1 -m "Version 0.1"
~/example-nginx2$ git push origin 0.1

Docker Hub example-nginx2 저장소의 Build Details 탭에서 Edit Build Details를 클릭합니다.


그림 13-21 Docker Hub Automated Build 설정

  • 버튼을 클릭하면 설정이 추가됩니다.

  • Type: Git 브랜치 형식입니다. Branch와 Tag를 선택할 수 있습니다. 여기서는 Tag를 선택합니다.
  • Name: Git 브랜치, 태그 이름입니다. 0.1을 입력합니다.
  • Dockerfile Location: 저장소에서 Dockerfile이 있는 경로입니다. 기본값 그대로 사용합니다.
  • Docker Tag Name: Docker 태그 이름입니다. 0.1을 입력합니다.

설정이 완료되었으면 Save and trigger build를 클릭합니다.


그림 13-22 Docker Hub Automated Build 태그 설정

Build Details 탭에 태그 0.1이 추가되었습니다. 빌드 설정을 수정하면 모든 태그를 다시 빌드하기 때문에 그림 13-23처럼 latest와 0.1 두 개를 빌드합니다.


그림 13-23 Docker Hub 태그 빌드

잠시 기다리면 Status가 Finished로 바뀌고 example-nginx2:0.1 이미지도 사용할 수 있게 됩니다.

앞으로 Dockerfile을 수정한 뒤 Git으로 브랜치, 태그를 Push하면 해당 이미지는 새로 생성됩니다. 단 Build Details에서 설정하지 않은 Git 브랜치, 태그는 Push해도 이미지가 생성되지 않습니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

30 November 2014