Page History
기본적으로 도커 레지스트리는 도커 허브를 통해 이미지를 업로드 및 버전관리, 다운로드가 이루어 진다.
공식적인 도커 허브는 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 가 된다.