도커 엔트리포인트와 커맨드
엔트리포인트와 커맨드
- 엔트리포인트 (Entrypoint)
- 도커 컨테이너가 실행할 때 고정적으로 실행되는 스크립트 혹은 명령어
- 생략 가능, 생략될 경우 커맨드에 지정된 명령어로 수행
- 커맨드 (Command)
- 단독으로 사용될 때는 도커 컨테이너가 실행할 때 수행할 명령어
- 엔트리포인트와 같이 사용될 때는 엔트리포인트에 지정된 명령어에 대한 인자 값
실제 수행되는 컨테이너 명령어는 [Entrypoint] [Command]
이다. 엔트리포인트는 커맨드와 달리 docker run 으로 컨테이너 실행 시 인자값을 전달해도 기존의 명령이 실행된다는 차이점이 있다.
FROM node:12-alpine
RUN apk add --no-cache python3
WORKDIR /app
COPY . .
RUN yarn install --production
ENTRYPOINT ["/bin/echo", "hello"] # 커맨드가 실행되기에 앞서 실행되는 프로그램
CMD ["world"]
위의 도커파일로 이미지를 빌드한 뒤에 docker run -it [image]
를 실행하면 hello world가 출력되지만, docker run -it [image] test
를 실행하면 hello test가 출력되어 hello는 바뀌지 않고 출력된다.
Dockerfile의 엔트리포인트와 커맨드
FROM node:12-alpine
RUN apk add --no-cache python3
WORKDIR /app
COPY . .
RUN yarn install --production
ENTRYPOINT ["docker-entrypoint.sh"] # 커맨드가 실행되기에 앞서 실행되는 프로그램
CMD ["node"]
도커 명령어의 엔트리포인트와 커맨드
docker run 명령어로 엔트리포인트와 커맨드를 오버라이드 한다.
$ docker run --entrypoint sh ubuntu:focal
$ docker run --entrypoint echo ubuntu:focal hello world
docker inspect 로 설정을 보면 아래와 같이 기본적으로 커맨드는 bash, 엔트리포인트는 아무것도 없는 것을 확인할 수 있다.
이제 엔트리포인트를 설정해 보자.
엔트리포인트와 커맨드를 모두 설정해 보자.