Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

기본적으로 도커 레지스트리는 도커 허브를 통해 이미지를 업로드 및 버전관리, 다운로드가 이루어 진다.

공식적인 도커 허브는 CLI 및 웹 사이트등의 여러 콘솔을 통해 접근이 가능하다.

검색 명령 또는 registry.docker.com 사이트를 통해서 기존의 이미지들을 검색 할 수 있다.

Panel

레지스트리

  • 이미지를 운영하고 배포하는 역할을 담당, 서비스 및 기본 레지스트리는 도커 허브임.

저장소

  • 관련된 이미지들의 집합.

태그

  • 저장소에 있는 이미지에 붙여진 알파벳과 숫자로 된 구분자를 말함.


사설 레지스트리 구성

도커는 사설 레지스트리를 사용하면 개인서버 및 기타 내부저장소에 이미지를 저장, 버전관리, 배포를 할 수 있다.

역시 이 레지스트리또한 컨테이너로 구성되며 다음의 공식적인 명령어로 실행 한다.

Code Block
# docker run -d --name registry -p 5000:5000 \
--restart=always\
registry:latest

사설 레지스트리는 기본적으로 5000번 포트를 사용함.

또한 레지스트리 컨테이너의 RESTful API를 사용할 수 있음.

다음의 명령어를 통해 실행 후 레지스트리가 정상적으로 작동하는지 확인.

Code Block
# curl localhost:5000/v2/
{}


사설 레지스트리에 Push

이미지를 업로드하려면 이미지의 접두어를 레지스트리 컨테이너가 존재하는 호스트 아이피와 

레지스트리 컨테이너 5000번 포트와 연결된 호스트의 포트로 설정해야 한다.

Code Block
# docker tag imageName:0.0 000.000.000.000:5000/imagesName:0.0

위의 명령어는 IP를 접두어로 설정했지만,

별도 도메인이 있는경우,webnori:5000/imagesName:latest 라는 식으로 설정할 수 있다.


다음의 명령어는 레지스트리에 이미지를 push 하는 방법이다.

Code Block
# docker push 000.000.000.000:5000/imageName:latest

도커는 기본적으로 HTTPS를 사용하지 않는 레지스트리 컨테이너에 접근이 불가능하다.

HTTPS를 사용하려면 별도 인증서를 적용하여 사용해야 한다.


Tip

--insecure-registry 옵션은 HTTPS를 사용하지 않는 레지스트리 컨테이너에 이미지를 push,pull 할 수 있게 사용할 수있다.

--insecure-registry 설정

도커 레지스트리를 저장소로 사용하기위해서는 다음과 같은 설정이 필요함.

Code Block
vi /etc/default/docker
DOCKER_OPTS="--insecure-registry=localhost:5000"


vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd $DOCKER_OPTS
environmentFile=-/etc/default/docker
service docker restart

클라이언트에서는 다음과 같이 설정.

Code Block
vi /etc/docker/daemon.json
{"insecure-registries":["localhostIP:5000"]}
service docker restart


사설 레지스트리에 Pull

업로드된 이미지를 Pull할때에 마찬가지 이미지의 접두어를 레지스트리 컨테이너의 URL 로 입력해야 한다.

pull 도 또한 SSL 에 대한 --insecure-registry 플래그가 도커 데몬에 설정되어야 사용할 수 있다.

다음은 사설 레지스트리에 업로드된 이미지를 pull 한다.

Code Block
# docker pull 000.000.000.000:5000/imagesName:latest



사설 레지스트리 옵션 설정

컨테이너의 내부 환경변수를 설정하여 

이미지 삭제, 스토리지백엔더, 이미지 에이러 파일등이 저장될 디렉토리, 웹훅(web hook) 설정들을 할 수 있다.


다음의 명령어를 통한 옵션 설정.

Code Block
# docker run -d -p 5001:5000 --name registry_delete_enabled \
--restart=always \
-e REGISTRY_STORAGE_DELETE_ENABLE=ture \
-e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/mydocker \
..
registry:latest


다음의 명령어는 기본적으로 사용하는 yml 파일의 내용을 출력.

yml 파일은 레지스트리 컨테이너의 /etc/docker/registry/config.yml 에 존재.

레지스트리 컨테이너에 적용하는 환경변수는 webhook, noti, 스토리지 백엔드 드라이버 등이 다양하게 존재한다.

전체 환경변수를 확인하기 위해서는 공식 도커 사이트를 참조 한다.


yml 이 설정되었다면, yml 파일을 적용한 레지스트리 컨테이너를 생성한다.

Code Block
# docker run -d --name registry \
-P 5000:5000 \
--restart=always \
-v $(pwd)/config.yml:/etc/docker/registry/config.yml \
registry:latest

이후 생성된 레지스트리 컨테이너에 push 가 발생이 되면,

yml 에서 설정된 (디렉토리) 사항으로 push 가 된다.