[Docker] Docker Hub로 Image Push & Pull

es.Seong·2024년 8월 13일
0

대학원 GPU 서버 (A100)을 사용해보려하니 Kubernetes(쿠버네티스)로 구축이 되어있었다.
쿠버네티스에는 기본 실행 단위인 파드(Pod)가 있고 파드 내에 컨테이너가 있는 형태이다.

다행히 py 파일로 파라미터를 입력하면 파드 생성 및 코드 실행이 자동으로 되어있는 듯 했다.
하지만 연구실 서버에서 사용하는 컨테이너에서 도커 이미지를 추출하고 이를 대학원 서버로 옮겨줘야 한다. (이미지만 추출하면 수정한 라이브러리 버전이 전부 초기화 될 것이다..)

연구실 서버에서 사용하는 컨테이너 환경을 도커 이미지로 저장하고, 이를 클라우드 기반 서비스인 Docker Hub로 저장한 후 사용할 서버에서 바로 사용하게 셋팅하는 일련의 과정을 설명하려 합니다.

1. 컨테이너 -> 이미지

사용 중인 컨테이너를 이미지로 만드는 작업이 필요하다.


Portainer 또는 docker ps 명령어를 통해 컨테이너 ID 값을 확인 후 docker commit 명령어를 통해 이미지로 만들어준다.

docker commit abcdef123456 save_images:TAG

abcdef123456는 컨테이너 ID이며 save_images는 저장할 이미지이고,TAG는 저장할 태그명이다.

docker images

위 명령어를 통해 저장된 이미지를 확인해주자.

다음과 같이 이미지로 저장된 것을 확인할 수 있다.

2. Docker Hub에 저장

*.tar 파일로 압축해서 직접 서버로 옮길 수도 있지만, 깃허브처럼 Docker Hub에 저장해두는 것이 분실의 위험도 적고, 형상관리에 용이하다.

https://hub.docker.com/

회원가입 후 이미지를 Repository에 저장해보자.

Docker Login

docker login

위 로그인 명령어를 통해 서버에 회원가입한 계정으로 로그인해주자.

Docker Tag

docker tag compression:latest docker_hub_id/compression:latest

tag 명령어를 통해 서버에 저장된 도커 이미지를 내 계정에 어떻게 저장할 것인지 정의하는 명령어이다.

Docker Push

docker push djstmd/compression:latest

깃허브의 푸시와 동일하게 push 명령어로 레포에 저장하면 된다.

실행결과 내 레포에 잘 저장된 것을 확인할 수 있다.

이제 내 Docker Hub에 저장된 이미지를 사용하고 싶다면 docker_hub_id/image_name:tag를 통해 접근이 가능하다. 단, 해당 계정으로 로그인되어 있어야한다.

만약 이미지를 사용해서 컨테이너를 만들고 싶다면

docker pull docker_hub_id/image_name:tag

위와같이 사용해주면 로컬이나 서버로 이미지 다운로드 받을 수 있다.

profile
Graduate student at Pusan National University, majoring in Artificial Intelligence

0개의 댓글