All technological notes.
ENTRYPOINT vs CMD vs RUNENTRYPOINT, CMD, RUNRUN
ENTRYPOINT:
PID 1(Docker namespace) when the container starts.ENTRYPOINT
docker run --entrypoint
CMD for default args.CMD:
docker run <img> <cmd_runtime>ENTRYPOINT exists, CMD is its default args;
CMD is the command.| 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 |
CMD onlyFROM 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
ENTRYPOINT onlyFROM 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
ENTRYPOINT & CMDFROM 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