본문 바로가기

기타/42Seoul

[42Seoul] ft_services를 하면서 ENTRYPOINT와 CMD 차이는 ?

ENTRYPOINT와 CMD는 해당 컨테이너가 마지막에 수행하게 될 실행 명령을 정의하는 선언문입니다.

CMD

컨테이너를 실행할때 (docker run할때) 맨 마지막에 인자값을 주게 되면 Dockerfile에 지정된 CMD값을 대신 하여 지정한 인자값으로 변경하여 실행되게 됩니다. 이 특성을 이용하여  docker run시 명령어를 주지 않았을 때 사용할 default 명령을 설정하거나 ENTRYPOINT의 default 파라미터를 설정할 때 사용합니다. 

ENTRYPOINT

해당 컨테이너가 수행될 때 반드시 ENTRYPOINT 에서 지정한 명령을 수행되도록 지정된다.

컨테이너 실행시 ENTRYPOINT에 지정한 명령어를 유지하고 추가 인자를 CMD로 받아서 처리한다 .

추가 인자를 받더라도 ENTRYPOINT의 값은 변하지 않고 CMD 값이 변하게 됩니다.

올바른 사용 방법 

컨테이너가 수행될 때 변경되지 않을 실행 명령은 ENTRYPOINT가 좋습니다.  이미지를 만들 때 목적이 확실하기 때문에 ENTRYPOINT로 정의 하는 것이 명확합니다. default인자 값이 필요하다면 CMD를 쓰시면 됩니다.

 

ENTRYPOINT와 CMD는 리스트 포맷을 정의 해주는게 좋다. 

쉘스트립트로 작성도 가능하지만 그 쉘스크립트를 문자열로 읽는 단계가 생기고 리스트 포맷 [""]으로하면 바로 task를 실행시키고 클리어하게 쓸 수 있습니다. 그리고 Docker 공식 Doucumentation도 List 형태로 작성하는 것을 추천합니다. 

 

 

'기타 > 42Seoul' 카테고리의 다른 글

[42Seoul] push_swap 서브젝트 정리 - yepark  (0) 2021.03.07
[42Seoul] minishell External Functions 정리 -yepark-  (0) 2020.12.26
ft_server  (0) 2020.09.11