[Docker] 도커이미지 만들고 컨테이너 실행하기

hugingstar·2023년 1월 9일
0
post-thumbnail

나중에 텐서플로우 모델을 만들어서 모델을 배포하려고 하는데, 아주 편리한 방법 중에 하나가 Docker를 사용해서 배포하면 좋다고해서 도커의 이미지를 만드는 방법을 정리해본다.

목표

(1) 도커파일 만들기
(2) 우분투 안에 필요한 라이브러리 설치할 수 있는 환경 만들기
(3) 판다스 설치하고 버전 확인하기(main.py)
(4) 간단판 파이썬 파일 카피하기

1. Dockerfile & Image build

  • 처음 이부분을 이해할 때 개인적으로는 시간이 조금 걸렸다.
  • Dockefile이 어떤 확장자인지 몰랐었고, 딱히 그것에 대해 설명해준 문헌이 많이 없었다. 이런 저런 문헌 내용을 종합하고 시행착오로 내용을 정리해본 결과, 우분투 환경에서 개발할 때 vi 편집기는 특별히 필요하지는 않았고, 더블클릭해서 들어가서 수정해도 간편하게 수정이 가능했다.
  • 그리고, vi 편집기 사용법이 너무 익숙하지 않아서 사용하지 않는게 더 나은 것 같다.(장점을 따로 모르겠음.)

(1-1) Dockerfile 작동 순서

(1) ubuntu18:04라는 이미지에서부터 작업을 시작하고록 설정했다.
(2) Dockerfile 안에서 폴더를 생성했다. (RUN mkdir)
(3) 작업 경로를 지정했다. (WORKDIR)
(4) 라이브러리 깔려고 만든 Requirement.txt를 복사한다.(경로지정은 직전의 WORKDIR의 영향을 받는다.)
(5) 우분투를 업데이트 한다.
(6) 작업 환경 구축에 필요한 기본 라이브러리들을 다운로드한다.(git까지)
(7) Requirement.txt를 읽어서 추가 라이브러리를 설치한다.
(8) main.py라는 파이썬 파일을 카피한다.(main.py 안에는 pandas의 버전 확인 코드 한 줄이 들어있다.)
(9) 완료되면 "python3", "main.py"를 순차적으로 실행한다.

  • Dockerfile 전체 내용
FROM ubuntu:18.04

RUN mkdir -p /home/volttron/Desktop/deployment

WORKDIR /home/volttron/Desktop/deployment

COPY ./Requirements.txt .

RUN apt-get update

RUN apt-get install -y build-essential python3.6 python3.6-dev python3-pip python3.6-venv

RUN apt-get install -y git

RUN python3.6 -m pip install pip --upgrade

RUN pip3 install -r ./Requirements.txt

COPY ./main.py .

CMD ["python3", "main.py"]
  • Dockerfile 안에 적힌 내용

  • Requirements.txt 파일 안에 적힌 내용

  • 도커 이미지 발행에 필요한 기본적인 파일들

(1-2) Image build

  • 지금까지 계획한 작업환경을 이미지 파일로 만들어내는 과정이다.
  • 여기서는 [-t] 옵션 사용법을 알면 특별하게 더 할 것은 아직 없다.
  • deploy라는 이미지 파일을 v0.1 태그로 발행한다는 의미이다.
cd Desktop/deployment
sudo docker build --tag deploy:v0.1 .

2. Docker container

  • 이미지 파일에서 작업환경을 실수없이 잘 갖춰서 발행 완료되었다면, 컨테이너를 실행하는 것은 간단하다.
  • 앞에서 작성한 Dockerfile에서 CMD 라는 부분을 자동적으로 실행해서 내가 원하는 동작을 한다고 생각하면 된다.
  • 즉, CMD가 시작한 이후의 동작을 프로그래밍한다고 생각하면된다.

(2-1) image 파일 확인

  • 지금 발행된 이미지파일을 확인한다.
# 이미지 파일 확인
sudo docker images

# 불필요한 이미지 파일 삭제(이미지 발행하다 중단하면 잔여물이 남아 있어서 용량을 많이 차지함.)
sudo docker rmi [Image ID]

(2-2) Container 실행하기

  • 드디어 도커 컨테이너를 실행한다.
  • [-it] 옵션은 터미널에서 수정할 수 있도록 하는 옵션이니까 넣기
  • [--rm] 옵션은 컨테이너가 종료되면 잔여물리 남지 않도록하는 옵션이다.(중요한 작업을 시작하기 전에는 이 옵션 여부를 꼭 확인해야 한다.)
sudo docker run -it --rm deploy:v0.1
  • 실행이 잘 되었는지 확인하기(판다스 버전 1.1.5가 확인되었다.)

  • 지금은 --rm 옵션이 모두 실행되어서 컨테이너가 자동적으로 종료되어서 잔여물이 남지 않았지만, --rm 옵션을 끄면 컨테이너는 그대로 남아있다. 아래 명령어로 컨테이너 상황을 확인한다.

  • [-a] 옵션은 정지된 컨테이너도 모두 보기 위한 옵션이다.

sudo socker ps -a
  • 이렇게 하면 기본적으로 어떤 모델을 개발해서 배포하는 환경을 자동화할 수 있다.(세부 설정은 더 필요하지만 전반적인 작동 원리 파악은 가능하다.)

0개의 댓글