이것저것 기록

[Docker] 파이썬 스크립트를 실행하는 도커 이미지 빌드하기 본문

Data Science/New Tech

[Docker] 파이썬 스크립트를 실행하는 도커 이미지 빌드하기

anweh 2021. 6. 11. 21:43

도커도커~~ 이제 어느정도 도커 컨테이너, 이미지, 도커의 동작 방법 등 도커에 대한 개념이 잡힌 것 같다. 

그렇다면 이제, 도커 이미지를 빌드해보자. 큰 맥락에서의 이미지 빌드 프로세스는 다음과 같다.

 

 

 

1. 파이썬 스크립트 작성

  • 아무 편집기나 켜서 파이썬 스크립트를 작성한다. 나는 spyder를 켜서 딱 다음 한 줄을 작성해주고 test.py로 저장했다.
    print("Hello World!")​
  • 이미지 빌드 시, Dockerfile과 파이썬 스크립트만 따로 독립된 폴더에 존재해야 하기 때문에, 나는 바탕화면에 hello-demo라는 폴더를 만들고, 위 스크립트를 넣어줬다. 

 

 

2. Dockerfile 작성

    • 이미지 빌드를 위해선 Dockerfile을 작성해야한다. Dockerfile을 통해 내가 원하는 내용을 기반으로 이미지를 제작할 수 있다. 꽤나 복잡한 명령어와, 수많은 옵션이 있지만... 일단 오늘은 간단하게 'Hello World!'를 출력하는 코드를 실행하는 이미지를 제작해보려고 한다. 
    • 우선 'Hello World!'를 출력하기 위해서 필요한 게 뭘까? 내 컴퓨터에 아무것도 깔려있지 않다고 생각해보자. 바로 파이썬이다. 이외에 다른 것은 필요 없다. 파이썬의 내장함수인 print()만 있으면 된다.
      FROM python 
      WORKDIR /usr/src/app 
      COPY . . 
      CMD ["test.py"]
      ENTRYPOINT ["python3"]
    • Dockerfile은 위와 같이 작성해줬다.
      • FROM: 베이스 이미지
      • WORKDIR: 작업 디렉토리를 지정한다. 만약 해당 디렉토리가 없으면 새로 생성한다. 작업 디렉토리를 지정하면 그 이후 명령어는 해당 디렉토리를 기준으로 동작한다. (cd 명령어와 동일)
      • COPY: build 명령 중간에 호스트의 파일 또는 폴더를 이미지에 복사한다. 
      • CMD: 컨테이너를 생성/실행할 때 실행되는 명령어이다. docker run 명령으로 컨테이너를 생성하거나, docker start 명령으로 정지된 컨테이너를 시작할 때 실행된다.
      • ENTRYPOINT: docker run 실행 시 실행되는 명령어다. CMD와 ENTRYPOINT 모두 컨테이너 실행 시 실행되는데, 약간의 차이가 있다 (이건 좀 더 알아보고 포스팅 하는걸로)
    • Dockerfile은 메모장으로 작성하고, .txt 확장자를 제거한 후 'Dockerfile'이라는 이름으로 저장한다. 위치는 아까 독립적으로 만들어둔 hello-demo 폴더 안에~

 

 

3. cmd창에서 docker build하기 

  • cmd 창 실행 후, 다음과 같이 입력하여 이미지를 빌드해주자. 주의할 점! 아까 만든 Dockerfile이 있는 경로로 이동해야한다. 
$ DOCKER_BUILDKIT=0  docker build -t hello-demo  . 

  • 이미지가 정상적으로 만들어지기까지 꽤 오래 걸렸다... 이미지가 잘 만들어졌는지 확인하려면 다음과 같이 입력해보자.
  • 스크립트에 작성한대로 'Hello World!' 가 cmd창에 출력된다면 성공한 것이다. 
  • $ docker images $ docker run hello-demo​

 

 

 

다음 번에는 좀 더 복잡한(?) Dockerfile을 작성해봐야겠당

Comments