레퍼런스
ENTRYPOINT 명령어는 오버라이딩이 어렵고 CMD 명령어는 오버라이딩이 쉽다.docker run 시에 다른 실행 명령어가 있으면 CMD 명령어에 써준 내용은 무시된다. 반면에 ENTRYPOINT 명령어는 무시되지 않고 docker run에 붙여준 실행 명령어를 인자로 받아서 컨테이너를 실행한다.CMD 명령어는 docker run 명령 내에 명시된 매개변수가 있는 경우 Daemon에서 무시된다.ENTRYPOINT 명령어는 무시되지 않고 대신 명령의 인수로 취급하여 매개변수로 추가된다.FROM centos:7
CMD ["echo", "Hello, Darwin"]
docker build -t hello:cmd .
docker run hello:cmd
Hello, Darwin
docker run hello:cmd world
world
CMD 명령어를 사용하는 가장 좋은 방법은 사용자가 command line에 인자를 입력하지 않을 때 실행할 기본 프로그램을 지정하는 것이다.CMD에 지정한 인자가 기본 이미지를 로드한다.docker run 명령을 실행하여 Dockerfile 내에 지정된 지침을 재정의할 수 있다.ENTRYPOINT 명령어 사용 예시FROM centos:7
ENTRYPOINT ["echo", "Hello, Darwin"]
docker build -t hello:entrypoint
docker run hello:entrypoint
Hello, Darwin
docker run hello:entrypoint world
Hello, Darwin world
ENTRYPOINT 명령어는 컨테이너가 시작될 때 필수적으로 특정 명령을 실행해야 하는 경우에 적합하다.ENTRYPOINT와 CMD 함께 사용하기CMD를 사용하여 매개 변수를 정의하고 ENTRYPOINT 명령을 사용하여 실행 파일을 정의할 수 있다.FROM centos:7
ENTRYPOINT ["echo", "Hello,"]
CMD ["Darwin"]
docker build -t hello:together .
docker run hello:together
Hello, Darwin # 매개변수 없이 컨테이너를 실행하면 CMD에 지정한 인자 사용
docker run hello:together world
Hello, world # 매개변수 넘겨주면 CMD 기본값은 오버라이딩되어 무시됨
ENTRYPOINT를 사용한다.CMD 명령어는 도커 컨테이너가 실행될 때 command line에 명시적으로 인자값을 지정하지 않는 경우에 기본 명령어 역할을 하는 인자를 설정하는 데에 사용한다.