본문 바로가기
CS/Docker

[docker] 도커 엔트리포인트(entry point) 의 이해와 IBM LSF Job starter 기능

by Warehaus 2022. 7. 17.

 

 

Docker entry point


컨테이너가 시작될 때 CMD 값을 인자로 받아 수행이 가능한 명령어

 

 

CMD?


기본적으로 도커는 CMD를 이용하여 컨테이너가 시작될 때 실행할 명령어를 설정합니다.

이 점에서는 ENTRYPOINT와 크게 다른바가 없으나, 서로 역할이 조금 상이합니다. 그 차이는 바로 ENTRYPOINT는 CMD를 인자로 받는다는 점 입니다.

 

아래처럼 entrypoint 와 cmd가 설정 된 상태에서 docker를 실행하면 결과는 어떨까요?

entrypoint: echo
cmd: python3

결과는 다음과 같습니다.

python3

 

즉, 아래와 같은 명령어가 실행되었다고 보시면 됩니다.

echo python3

 

 

ENTRYPOINT  활용하기


이걸 어떻게 이용해야 할까요?

제가 생각하는 예시가 적절할 지 모르겠습니다만, 제 머릿속에 떠오르는 예시는 아래와 같습니다.

 

우선, entrypoint에 설정 할 하나의 shell script를 작성합니다.

실행파일 이어도 좋구요.

 

#!/bin/bash

cmd=$1

if [ ${cmd} = "TEST" ] ; then
    echo "RUN_TEST"
fi

 

이 스크립트를 a.out 이라고 저장해 봅니다.

a.out 스크립트는 첫번 째 인자가 TEST인 경우 "RUN_TEST"를 출력합니다.

 

그리고 다음처럼 entrypoint와 cmd를 구성하여 docker를 실행해 봅니다.

 

$ docker run -i -t --entrypoint="a.out" --name entry ubuntu:14.04 TEST
RUN_TEST

 

RUN_TEST라는 출력이 나옵니다.

결국 docker는 "a.out TEST" 명령어를 실행시켰고, 기존 작성 된 a.out 스크립트 조건문에 의해 RUN_TEST가 출력됩니다.

 

이런 비슷한 기능을 IBM의 LSF 스케줄러에서 본 적이 있는데요, 조금 목적은 다르겠지만...

참고 차원에서 링크를 남겨두고 글을 마무리하겠습니다.

 

 

IBM LSF Job Starter


https://www.ibm.com/docs/en/spectrum-lsf/10.1.0?topic=starters-command-level-job