Skip to content
Rahul Shishodiaon GitHub LinkedIn profile

Containers

Terminology

  • Dockerfile → blueprint → Image → running Container
  • CRI runtime (containerd) on nodes: check: kubectl get nodes -o wide

Dockerfile instructions

InstructionPurpose
FROMBase image
WORKDIRWorking dir for subsequent instructions
COPYHost files into image
ENTRYPOINTDefault executable (harder to override)
CMDDefault args (fully replaced by docker run args)
EXPOSEDocuments port (does not publish)

Docker CLI (exam-relevant)

docker build -t name:tag .
docker images
docker run -d -p 8080:8080 image:tag
docker container ls / docker container ls -a
docker logs <id>
docker exec -it <id> bash
docker tag src target          # same IMAGE ID: not a copy
docker push user/image:tag
docker save -o file.tar image:tag
docker load --input file.tar

CMD vs ENTRYPOINT

OverrideRuntime args
CMDAny docker run arg replaces CMDReplace entirely
ENTRYPOINT--entrypoint onlyAppended to ENTRYPOINT
Both--entrypoint + argsArgs override CMD default

Kubernetes mapping (memorize)

DockerK8s Pod field
ENTRYPOINTcommand
CMDargs
# docker run ubuntu-sleeper 10
args: ["10"]

# docker run --entrypoint sleep2.0 ubuntu-sleeper 10
command: ["sleep2.0"]
args: ["10"]
kubectl run mypod --image=busybox:1.36.1 -o yaml --dry-run=client \
  -- /bin/sh -c "while true; do date; sleep 10; done"
# everything after -- → args

Failures

SymptomCause
CrashLoopBackOffWrong command / args: container exits immediately

Exam tips

  • command = ENTRYPOINT, args = CMD: most common confusion
  • Containers run as root by default: override in production via securityContext
  • --privileged removes capability restrictions: never in production