Kicarussays

Docker 이미지 만들고 Docker hub에 공유하기 (feat. Tensorflow v1.14) 본문

Docker

Docker 이미지 만들고 Docker hub에 공유하기 (feat. Tensorflow v1.14)

Kicarus 2021. 11. 11. 10:46

Docker hub에는 사람들이 업로드 해둔 유용한 이미지들이 정말 많습니다.

 

이러한 이미지에 사용자가 추가적으로 필요한 패키지들을 설치하여 사용하게 될텐데, 이렇게 만든 사용자 이미지를 내 도커에 올려서 그때그때 사용한다면 참 편하겠다는 생각이 들어서 포스팅을 정리하게 되었습니다.

 

순서는 다음과 같습니다.

 

  • Docker hub 회원가입
  • 도커 로그인
  • 도커허브에서 사용할 이미지로 컨테이너 생성
  • 추가적으로 필요한 패키지 설치
  • 완성된 컨테이너로부터 새로운 이미지 생성
  • docker hub에 업로드할 repository 생성
  • 업로드

0. 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

 

1. 도커 로그인

docker login

터미널에서 도커에 로그인합니다.

위 이미지처럼 아이디와 비밀번호를 입력하면 로그인할 수 있습니다.

로그인에 성공하면 마지막에 Login Succeeded 라는 메시지를 출력합니다.

 

 

2. 도커허브에서 사용할 이미지로 컨테이너 생성

docker run -it --gpus all --name tf14 tensorflow/tensorflow:1.14.0-gpu-py3 /bin/bash

저는 tensorflow 1.14 버전을 사용해야 하는 상황이라 이에 해당하는 이미지로 컨테이너를 생성하였습니다.

(Explainer 방법론인 SHAP이 tensorflow 1.14에서 잘 작동합니다.. pytorch는 언제쯤 가능할지 모르겠네요)

 

 

코드 구성요소

 

  •  docker run : 컨테이너 생성
  • -it : 생성한 컨테이너에 입출력을 수행하게 하는 옵션 (컨테이너로 작업을 해야하니 꼭 필요한 옵션입니다)
  • --gpus all : 서버에 설치된 gpu 장치를 모두 사용
  • --name tf14 : 이름이 tf14인 컨테이너 생성
  • tensorflow/tensorflow:1.14.0-gpu-py3 : 컨테이너 생성에 사용할 이미지 이름
  • /bin/bash : 컨테이너 생성 직후 실행할 명령어 (컨테이너 생성 후 자동으로 bash가 실행되게 합니다)

 

이미지 업로드 할 때 stop된 컨테이너를 활용해야 하기 때문에, 컨테이너가 stop 되었을 때 자동으로 삭제되게 하는 --rm 옵션은 절대 추가하면 안됩니다!!

 

이제 다음과 같이 컨테이너가 생성되고, bash 명령어를 입력할 수 있는 환경이 구성되었습니다.

 

 

3. 추가적으로 필요한 패키지 설치

pip install jupyterlab

Tensorflow 1.14 이미지엔 jupyter lab이 설치되어 있지 않습니다.

따라서 저는 여기에 추가적으로 jupyter lab을 비롯하여, 필요한 여러가지 패키지들을 설치할 것입니다.

 

 

4. 완성된 컨테이너로부터 새로운 이미지 생성

이제 생성한 컨테이너 tf14에서 exit 명령어를 통해 나오거나, 아래와 같은 docker stop 명령어를 활용하여 컨테이너를 Exited 상태로 만듭니다.

docker stop tf14

이어서 아래와 같은 명령어를 실행하여 컨테이너를 이미지로 생성합니다.

docker commit -a "jjy" [container_id] [image_name/tag]

이제 docker hub에 업로드할 새로운 이미지가 생성되었습니다!

 

 

5. docker hub에 업로드할 Repository 생성

Create Repository를 눌러서 만든 이미지를 업로드할 새로운 Repository를 생성합니다.

 

encl1228 은 제 도커 아이디입니다. tagname은 tf14shap으로 정했습니다. 이렇게 되면 이 이미지의 이름은 encl1228/tf14shap 이 됩니다. 이제 Create 버튼을 눌러 Repository를 생성합니다.

 

6. 업로드

docker push encl1228/tf14shap

이제 docker push 명령어를 통해 업로드합니다

 

 

이제 Repository에 Push된 것을 확인할 수 있습니다.

 

 

이제 docker pull 명령어를 통해 어떤 도커환경에서든 내 이미지를 가져올 수 있습니다.

 

 

 

 

 

Comments