Dockerfile 에서 RUN, CMD, ENTRYPOINT 차이#
- RUN - 도커이미지 생성시 동작
- CMD - 도커이미지 실행시 동작 (대체 가능)
- ENTRYPOINT - CMD와 같으나 실행시 반드시 동작
Dockerfile - RUN#
# create log script
vi log-event.sh
...
#!/bin/sh
echo `date` $@ >> log.txt
cat log.txt
...
chmod u+x log-event.sh
# create Docker Image
vi Dockerfile
...
FROM alpine
ADD log-event.sh /
RUN ["/log-event.sh","image created"] # 생성시 동작
CMD ["/log-event.sh","container started"] # 실행시 동작
...
docker build -t myimage .
# Run Docker Image - RUN은 이미지 생성시에 동작했음을 알 수 있다.
docker run myimage
Wed Sep 27 07:10:26 UTC 2023 image created
Wed Sep 27 07:36:10 UTC 2023 container started
docker run myimage
Wed Sep 27 07:10:26 UTC 2023 image created
Wed Sep 27 07:36:21 UTC 2023 container started
Dockerfile - CMD, ENTRYPOINT#
# Create Docker Image
vi Dockerfile
...
FROM alpine
ADD log-event.sh /
RUN ["/log-event.sh","image created"] # 생성시 동작
CMD ["/log-event.sh","container started"] # 실행시 동작 (무시됨)
CMD ["/log-event.sh","container running"] # 실행시 동작 (마지막CMD처리)
...
docker build -t myimage .
# Run Docker Image
docker run myimage
Wed Sep 27 07:10:26 UTC 2023 image created
Wed Sep 27 07:23:09 UTC 2023 container running
# Create Docker Image
vi Dockerfile
...
FROM alpine
ADD log-event.sh /
RUN ["/log-event.sh","image created"] # 생성시 동작
ENTRYPOINT ["/log-event.sh"] # 실행시 동작
CMD ["container started"] # 실행시 동작
...
docker build -t myimage .
# Run Docker Image
docker run myimage
Wed Sep 27 07:10:26 UTC 2023 image created
Wed Sep 27 07:23:09 UTC 2023 container started
# Run Docker Image with argument
docker run myimage custom event
Wed Sep 27 07:10:26 UTC 2023 image created
Wed Sep 27 07:24:31 UTC 2023 custom event
REFERENCE#