Note_Tech

All technological notes.


Project maintained by simonangel-fong Hosted on GitHub Pages — Theme by mattgraham

Docker - Image: ENTRYPOINT vs CMD vs RUN

Back


ENTRYPOINT, CMD, RUN


Comparison

Concept When it runs Primary role Typical override
RUN Build time Build the image (make filesystem changes) Not applicable at runtime; rebuild image
ENTRYPOINT Container start Fix the main executable (PID 1) docker run --entrypoint ...
CMD Container start Default command/args Extra args or command at end of docker run

Lab: CMD only

FROM alpine:latest
RUN apk add --no-cache bash
CMD ["echo", "Messge from CMD"]
docker build -t demo_cmd .

# run cmd
docker run --rm demo_cmd
# Messge from CMD

# run override
docker run --rm demo_cmd echo "This is overridden"
# This is overridden

Lab: ENTRYPOINT only

FROM alpine:latest
RUN apk add --no-cache bash
ENTRYPOINT ["echo"]
docker build -t demo_entrypoint .

# pass arg with command
docker run --rm demo_entrypoint "Message from ENTRYPOINT"
# Message from ENTRYPOINT

# overriden entrypoint
docker run --rm --entrypoint /bin/bash demo_entrypoint -c "echo override entrypint"
# override entrypint

Lab: ENTRYPOINT & CMD

FROM alpine:latest
RUN apk add --no-cache bash
ENTRYPOINT ["echo"]
CMD ["cmd","&","entrypoint"]
docker build -t demo_cmd_entrypoint .

# run entrypoin + cmds
docker run --rm demo_cmd_entrypoint
# cmd & entrypoint

# override cmds
docker run --rm demo_cmd_entrypoint "override cmd"
# override cmd

# override entrypoint & cmd
docker run --rm --entrypoint /bin/bash demo_cmd_entrypoint -c "echo 'override entrypoint & cmd'"
# override entrypoint & cmd