ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Docker for ML #2] 나만의 개발환경 만들기 (Dockerfile)
    개발 환경/Docker 2020. 8. 28. 16:43
    반응형

    Dockerhub에는 이미 검증된 수많은 docker image가 있다. 하지만 나의 프로젝트에서 필요한 환경을 구축하기 위해서는 dockerhub의 이미지만으로는 부족하다. 즉, 나만의 이미지를 만들어야한다. Docker에서는 Dockerfile로 가능하다.

     

    1. Dockerfile 만들기

    mkdir docker
    cd docker
    
    vim Dockerfile

    docker라는 디렉토리를 만들고 이동한 후 Dockerfile이라는 파일을 작성한다. 디렉토리를 만드는 이유는 docker는 기본적으로 docker image를 빌드할 때 디렉토리에 있는 모든 것을 복사한다. 그래서 별도의 디렉토리에 Dockerfile을 만드는 것이다.

    아래 내용을 복붙한다.

     

    FROM		tensorflow/tensorflow:latest-gpu
    MAINTAINER	sah0322@naver.com
    
    RUN         apt-get -y update
    
    RUN		    pip install --upgrade pip
    RUN		    pip install	tensorflow_datasets pymongo sklearn pyyaml python-Levenshtein
    
    WORKDIR		/opt/project

     

    하나씩 설명하자면

    • FROM
      • 베이스가 될 이미지를 뜻한다. Dockerhub에서 적절한 이미지를 찾아서 이미지의 이름을 넣어주면 된다. 현재 위 예시는 tensorflow-gpu==2.3을 쓸 수 있는 이미지다.
    • MAINTAINER
      • 이미지를 만든 사람을 명시(옵션)
    • RUN
      • 명령어를 실행한다. 즉 apt-get -y update 명령어를 실행한다.
      • pip 업그레이드하고
      • 내가 원하는 패키지를 pip install로 설치한다.
    • WORKDIR
      • 컨테이너가 실행되면 /opt/project 디렉토리로 이동된다.

     

    2. Docker image build하기

    Dockerfile이 작성되었으면 docker image로 빌드해야 컨테이너를 생성할 수 있다.

    docker build -t tensorflow2 .
    
    docker build -t <docker image 이름> <Dockerfile이 있는 디렉토리>

     

    확인해보자. 아래 명령어로 현재 로컬에 존재하는 이미지들을 확인할 수 있다.

    docker images

    output:

    REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
    tensorflow2             latest              5568e0acfda0        3 hours ago         3.23GB
    hsh0322/k8s-ml          model01             b16311ec26b4        3 days ago          1.43GB
    hsh0322/filter_v2       <none>              6cb5effca0ca        4 days ago          3.23GB

    tensorflow2가 생겼다.

     

    3. Build된 docker image로부터 컨테이너 생성하기

    docker run -it tensorflow2 bash

    컨테이너를 띄우고

     

    pip list

    로 잘 설치되었나 확인.

     

    반응형
Designed by Tistory.