Docker 이미지를 직접 만드는 과정을 정리해보았다.
기본적인 Docker 이미지, 컨테이너 개념과 관련 명령어는 아래 링크 참고하길 바란다.
도커 개념(이미지, 컨테이너) 설명 및 관련 명령어 (tistory.com)
도커 개념(이미지, 컨테이너) 설명 및 관련 명령어
Docker란 애플리케이션 구축, 구현 및 테스트를 위해 격리된 가상환경을 생성하는 서비스형 플랫폼. Docker 이미지 특정 프로세스를 실행하기 위한(컨테이너 실행을 위한) 모든 파일과 설정값(환경)
bbooo.tistory.com
1. Docker 디렉토리 생성 및 기본이 될 도커 이미지 pull하기
docker는 기본적으로 docker image를 빌드할 때 디렉토리에 있는 모든 것을 복사한다고 하여, 별도의 디렉토리를 생성했다.
돌리려는 모델의 tensorflow 버전이 1.15.4로 python 3.7버전을 필요로 한다.
따라서 docker hub에서 python 3.7-slim 버전을 다운 받았다. python Tags | Docker Hub
-> 도커 이미지 빌드시 자동으로 다운받아주는 것 같아, 필수적으로 다운 받지 않아도 되는듯 해보였다.
mkdir docker
cd docker
#docker pull python:3.7-slim
2. requirements.txt 작성
돌리려는 모델의 requirements.txt를 docker 디렉토리로 복사해왔다.
3. Dockerfile 작성
FROM python:3.7-slim
RUN apt-get -y update
COPY ./requirements.txt .
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
WORKDIR /opt/project
- FROM : 베이스가 될 이미지를 뜻한다.
아래와 같은 에러가 났었는데, 이는 이미지 이름을 잘못 적어서 발생한 에러였다.
pull access denied for 3.7-slim, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
위를 해결하기 위해서 docker images 명령어를 통해 도커 이미지의 이름을 다시 확인하고, dockerfile의 FROM 필드를 수정하니 해결되었다. (태그까지 입력해줘야 한다. 아니면 latest 버전의 python 도커파일을 다운받는다.)
- COPY : 복사했던 requirements.txt는 디렉토리 상에서는 복사되었지만, 도커 이미지에서 복사가 안되었기 때문에 이미지 내에서 복사 명령어를 수행함으로써 requirements.txt를 docker build에 사용할 수 있도록 한다.
- RUN : 명령어를 실행함.
pip를 업그레이드 하고, requirements.txt에 있는 패키지를 pip로 설치하도록 하였다.
- WORKDIR : 컨테이너가 실행되면 /opt/project 디렉토리로 이동함.
4. Docker image build하기
아래 명령어를 통해 docker image를 build한다.
docker build -t [생성할 docker image 이름][dockerfile이 있는 디렉토리]
5. build된 docker image로 부터 컨테이너 생성하여 확인하기
docker container run -it [이미지명] bash
pip list
6. git 설치 및 git clone 하기(선택사항)
깃헙에서 코드를 가져오고자 git을 설치하였다.
apt install -y git
git clone [클론할 깃허브 링크]
+ <none>이미지 일괄삭제
docker image build하다 보니 <none>이미지가 쌓였다.
ID를 일일히 입력해서 지울 수 있지만, <none>이미지를 일괄 삭제하는 방법을 활용하였다.
docker rmi -f $(docker images -f "dangling=true" -q)
참고링크
[1] [Docker for ML #2] 나만의 개발환경 만들기 (Dockerfile) :: HanSeokhyeon.log (tistory.com)
[2] Docker 사용해보기 - 3 (python 모듈 Docker 에서 실행하기) - Error Reviewer (tistory.com)
'AI' 카테고리의 다른 글
리눅스 alias 설정 및 활용법 (0) | 2023.04.11 |
---|---|
pre-training과 fine-tuning 그리고 전이 학습 (0) | 2023.02.02 |
도커 개념(이미지, 컨테이너) 설명 및 관련 명령어 (1) | 2023.01.05 |