Docker hub, 

Docker private registry를 이용한 이미지 관리

정창훈(@seapy)

Docker 

배포할때

첫번째 걸림돌

이미지
업로드(push)
다운로드(pull)

공식 DEFAULT
사설 PRIVATE

호스팅 HOSTING

레지스트리 REGISTRY

Docker Hub

공식 레지스트리

http://hub.docker.com

다른 사람들이 만든 이미지 설정없이 바로 사용 가능

 

무료인 경우

    - 1 사설 저장소

    - 무한대의 공개 저장소

 

유료 정책도 있음

# Dockerfile

FROM busybox
CMD echo 'Hello, Docker!'

테스트용 이미지 빌드

# 위의 Dockerfile을 빌드

$ docker build -t seapy/echo .

# 도커 실행 확인

$ docker run --rm seapy/echo
Hello, Docker!
# 이미지 삭제
$ docker rmi sepay/echo
$ docker run --rm seapy/echo
Unable to find image 'seapy/echo' locally
Pulling repository seapy/echo
2014/11/01 00:32:49 Error: image seapy/echo not found

# 이미지 빌드 및 푸쉬
$ docker build -t seapy/echo .
$ docker push seapy/echo
$ docker rmi sepay/echo
$ docker run --rm seapy/echo
Hello, Docker!

그외 특징들

  • github, bitbucket 과 연결해서 Dockerfile 자동 빌드
  • push, pull 느림
  • 자동빌드도 좀 기다려야되고 느림

호스팅

호스팅 서비스

  • tutum.co
  • quay.io

사용하기 쉽다

# 호스팅 서비스에 로그인
$ docker login tutum.co
Username: seapy
Password:
Email: user@email.com
Login Succeeded

# 이미 빌드된 이미지에 새로운 이름을 추가
$ docker tag seapy/echo tutum.co/seapy/echo

# 호스팅 레지스트리에 이미지 push
$ docker push tutum.co/seapy/echo

사설 레지스트리

특징

  • 내부망을 사용하는 경우 속도가 hub 보다 빠름
  • s3, azure, swift, glance 등 다양한 저장소 지원
  • HTTP API 제공
  • 관리 페이지 부재
  • 기본 사양으로는 인증 지원 안됨(nginx 연동)

https://github.com/docker/docker-registry

$ docker run -d \
    --name docker-registry \
    -p 5000:5000 \
    registry

# 실행 여부 확인(boot2docker의 예. 우분투라면 ip를 0.0.0.0이나 서버의 IP로 변경)
$ curl "http://192.168.59.103:5000"
"docker-registry server (dev) (v0.8.1)"%

# 이미지에 새로운 이름 부여
$ docker tag seapy/echo 192.168.59.103:5000/echo

# 사설 레지스트리로 push
$ docker push 192.168.59.103:5000/echo

# 로컬 이미지 삭제 후 실행
$ docker rmi 192.168.59.103:5000/echo
$ docker run --rm 192.168.59.103:5000/echo
Unable to find image '192.168.59.103:5000/echo' locally
Pulling repository 192.168.59.103:5000/echo
88816139d249: Download complete
511136ea3c5a: Download complete
df7546f9f060: Download complete
e433a6c5b276: Download complete
e72ac664f4f0: Download complete
Status: Image is up to date for 192.168.59.103:5000/echo:latest
Hello, Docker!

로컬에서 레지스트리 실행

$ docker run -d \
    --name registry-ui \
    -p 8080:8080 \
    atcol/docker-registry-ui

레지스트리 UI

https://github.com/atc-/docker-registry-web

AWS S3에 이미지 저장

$ docker run -d \
    --name docker-registry \
    -p 5000:5000 \
    -v /docker/registry-conf:/registry-conf \
    -e DOCKER_REGISTRY_CONFIG=/registry-conf/config.yml \
    -e SETTINGS_FLAVOR=prod \ 
    registry
prod:
    loglevel: warn
    standalone: true
    storage: s3
    search_backend: sqlalchemy
    s3_bucket: your-bucket
    boto_bucket: your-bucket
    storage_path: /prod
    s3_access_key: S3_ACCESS_KEY
    s3_secret_key: S3_SECRET_KEY
    s3_encrypt: true
    s3_secure: true

환경설정 파일(/docker/registry-conf/config.yml)

실행

주의사항

  • s3_region 을 설정하면 오히려 안되는 경우가 있음
    • https://github.com/docker/docker-registry/issues/400

Registry
next
generation

https://github.com/docker/docker-registry/issues/612

python이 아닌 go 언어로 개발

이미지 포맷 변경

API 변경

Docker hub, private registry를 이용한 이미지 관리

By ChangHoon Jeong

Docker hub, private registry를 이용한 이미지 관리

도커 글로벌 해커톤 서울 행사에서 발표할 내용. 공식, 사설, 호스팅 레지스트리의 소개와 사용법을 소개하고 다음 버전의 레지스트리에 대한 소개

  • 5,414
Loading comments...

More from ChangHoon Jeong