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
'CS > Docker' 카테고리의 다른 글
[docker] 도커 데몬을 실행하는 방법, MacOS 에서의 dockerd (1) | 2022.07.11 |
---|---|
docker 명령어를 이용한 사설 레지스트리(private registry)기반 개인서버에 이미지 저장소 만들기 (0) | 2022.05.18 |
docker log 확인하는 방법 / docker logs 명령에서 tail, since 사용하는 방법 (0) | 2022.04.15 |
도커 볼륨 (Docker volume) 명령어를 활용한 데이터 보존 방법 (0) | 2022.03.17 |
docker container 를 이용한 mysql기반 wordpress 로 블로그 만들기 2 - MAC book 에서 다시 실행한 docker desktop (0) | 2022.03.15 |