OpenSource/Docker

[Docker] private registry 구성 후 image push 하기

Min 2022. 1. 24. 17:51

이번 포스팅은 폐쇄망 환경에서 사용할 수 있는 docker private registry를 구성해보겠습니다.

 

이미지 파일을 가져오기 위해서는 docker pull [이미지명] 명령어로 받을 수 있는데, 보통 docker hub에서 가져옵니다.

 

그런데 외부망으로 접근할 수 없는 폐쇄망에서는 docker hub에 있는 이미지 파일들을 가져올 수 없습니다.

 

따라서, 필요한 이미지들을 외부에서 다운 받은 후 docker save 명령어를 이용해서 tar파일로 변환하고,

 

폐쇄망 도커 환경에 해당 파일을 docker load 명령어를 이용해서 image로 변환 후에 밀어 넣어줘야 합니다.

 

그 후 private registry를 구성하여 해당 registry에 사용할 image를 push해서 private registry를 사용할 수 있습니다.

 

 

먼저 docker registry를 구성하기 위해 registry image를 받습니다.

docker pull registry

잘 받아졌는지 확인하기 위해 docker images 명령어로 확인해봅니다.

위와 같이 뜨면 됩니다.

 

그 다음 해당 이미지로 컨테이너를 실행해보겠습니다.

docker container run -d -p [컨테이너 포트 넘버]:[호스트 포트 넘버] --name [컨테이너명] registry
docker container run -d -p 5000:5000 --name registry registry

실행 후 정상적으로 컨테이너가 올라왔는지 확인합니다.

docker ps

registry의 이름으로 정상적으로 동작하고 있습니다.

 

폐쇄망 docker환경이라는 가정하에 registry를 구축했고, 이제 docker image를 pull해보겠습니다.

 

1. 먼저 인터넷이 되는 docker 환경(외부)에서 image파일을 pull 합니다. (인터넷 가능 환경)

docker pull postgres

docker images 명령어로 image가 잘받아졌는지 확인합니다.

 

2. 해당 이미지 파일을 docker save 명령어로 .tar파일로 변환해서 내려받습니다. (인터넷 가능 환경)

docker save -o postgres.tar postgres:latest

 

3. 해당 파일을 저장매체 또는 SSH를 이용하여 폐쇄망 서버로 이동합니다.

 

4. docker load 명령어로 image 파일을 불러옵니다. (폐쇄망 환경)

docker load -i postgres.tar

 

5.해당 이미지 파일을 미리 폐쇄망에 구성해둔 private registry에 push하기 위해 새롭운 tag생성

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag postgres:latest 127.0.0.1:5000/postgres-test:latest

127.0.0.1:5000은 현재 privagte registry가 동작하고있는 컨테이너의 주소입니다.

 

6. registry로 push

docker image push 127.0.0.1:5000/postgres-test:latest

7. 레지스트리에 이미지 파일이 잘 올라갔는지 확인해봅니다. 

curl -X GET http://127.0.0.1:5000/v2/_catalog

 

postgres-test 가 보이면 잘 올라갔습니다.

 

8.해당 레지스트리에서 이미지 파일을 pull 할수 있는지 확인해 봅시다.

docker pull 127.0.0.1:5000/postgres-test:latest

 

정상적으로 이미지를 가져온 것을 볼 수 있습니다.

 

이상 폐쇄망 환경 가정하에 레지스트리 생성 및 동작과, image 파일 save, load, tag등을 진행해보았습니다.