[Docker]7. 도커 레지스트리 [도커 기초 | Week 4]
DevOps/Docker

[Docker]7. 도커 레지스트리 [도커 기초 | Week 4]

목차

- docker hub

- docker hub push 실습

- docker registry

- registry 구축 실습


Docker hub

 

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Build and Ship any Application Anywhere Docker Hub is the world's easiest way to create, manage, and deliver your teams' container applications.

hub.docker.com

 

도커 허브는 도커에서 디폴트로 참조하는 레지스트리로서, 각종 공식 이미지를 손쉽게 사용할 수 있도록 구성되어 있습니다. 또한 무료 계정을 생성하여 개인이 빌드한 이미지도 공개할 수 있죠. 실습을 진행하기 전에 계정 생성을 먼저 진행해야 합니다.

 

docker hub에 로그인 후 Repositories를 눌러

create Repository를 누릅니다.

 

계정 생성이 완료되면 'Create Repository' 버튼을 눌러 저장소를 만들어 줍니다.

저장소명은 용도에 맞게 자유롭게 입력해주면 됩니다. Visibility 항목에서는 도커 허브에서 내 저장소가 검색 결과에 조회되는 가에 대해 PublicPrivate 설정을 할 수 있는데, 무료 계정의 경우 하나의 저장소Private으로 설정할 수 있습니다.

 

저장소가 성공적으로 생성되었다면 위와 같은 화면이 나오게 됩니다. 아직은 이미지가 올라가거나 별도 작업을 하지 않았기 때문에 특별한 내용은 없습니다

 

Automated Builds, 자동으로 빌드해주는 기능이지만, Pro 버전에서만 이용 가능하네요.

 


Dockerhub 실습

 

새로운 디렉터리를 만들고 

git clone으로 파일을 받습니다.

 

 

잘 받아진 모습이네요!

 

 

 

 

 

 

 

Dockerfile도 확인했고 이제 만들어봅니다.

 

Dockerhubpush 하기 위해 아래의 규칙을 지켜서 build 합니다.

 

 

 

sudo docker build -t [도커 허브의 username/레퍼지토리명:태그명] 위치

 

sudo docker build -t heansum1556/portfoilo:1.1 .

 

 

sudo docker image ls로 확인 후

 

build가 성공적으로 잘된 모습입니다.

 

 

dockerhubpush 하기 위해 docker 로그인을 합니다.

 

sudo docker login

 

sudo docker push [이미지명:TAG]

 

sudo docker push heansum1556/portfolio:1.1

 

 

dockerhubpush가 된 모습입니다.

 

 

도커 허브 계정에서도 역시 공유한 이미지 정보 및 태그 등을 확인할 수 있으며 Public으로 저장소를 설정한 경우 검색 결과에도 조회됩니다.

 

 


도커 레지스트리 구축

 

도커를 통해 실행되는 애플리케이션은 컨테이너 단위로 실행됩니다. 이미지가 저장되는 레지스트리 역시 컨테이너 상에 구축할 수 있는데요, 이는 도커 社에서 registry라는 이름으로 제공하고 있습니다.

 

registry offical image이며, docker사에서 제공해줍니다.

 

 

 

 

$ docker run -d -p 5000:5000

   --restart always

   --name registry registry:2

 

이 명령어를 입력하게 되면 없는 이미지이기 때문에, registry 이미지를 받게 됩니다.

 

sudo docker run -d -p 5000:5000 --restart always --name registry registry:2

 

 

sudo docker ps 

 

ps 명령어로 확인해보니 status가 정상적으로 up상태로 있습니다.

 

 

 

이제 docker tag 명령어로 기존의 이미지에 태그를 붙여서 다른 레지스트리로 push 할 수 있게 합니다.

 

sudo docker tag heansum1556/portfolio:1.0 localhost:5000/portfolio:1.0

 

 

sudo docker push localhost:5000/portfolio:1.0

명령을 실행하면 도커 허브와는 다른 경로로 이미지가 공유된 것을 확인하실 수 있습니다.

[localhost:5000/portfolio]

 


Registry push pull 실습

 

 

registry:2가 구동 중인 것을 확인하고,

구동 중이지 않으면 sudo docker container start [CONTAINER ID] 명령어를 통해서 아래와 같이 구동시켜줍니다.

 

 

 

sudo docker tag heansum1556/portfolio:1.1 localhost:5000/portfolio:1.1

sudo docker image ls

 

 

sudo docker push localhost:5000/portfolio:1.1

 

태그로 만들어준 친구도 잘 push가 됩니다.

 

 

local image 삭제 후 다시 pull 해봅시다.

 

sudo docker image rm localhost:5000/portfolio:1.1

 

 

sudo docker image pull localhost:5000/portfolio:1.1

pull이 잘된 모습입니다.