Learn
Two things you thought were one thing
A particular kind of confusion causes a disproportionate amount of lost time: not missing knowledge, but two separate concepts collapsed into one in your head. You know what EXPOSE does, you know what -p does, and somewhere along the way they became the same idea — so now the container is running, the port is right, and nothing answers.
A general article does not fix that, because the problem is not a gap. These pages name both things, say plainly how they differ, and then show the specific error the confusion produces — which is usually what you actually arrived with.
Read as much as you need. The first line of each page is the answer; everything after it is there if you want to understand why, see it happen, or explain it to somebody else.
HTTP
SRE
symptom-based alerts vs cause-based alerts
A symptom alert fires when users are affected. A cause alert fires when a thing you can measure looks unusual. The second set is far larger, mostly harmless, and is where alert fatigue comes from.
SLO vs SLA
An SLI is what you measure. An SLO is the target you hold yourself to. An SLA is a contract with consequences if you miss it — and it should always be looser than your SLO.
Docker
EXPOSE vs -p / --publish
EXPOSE is documentation. `-p` is what actually makes a port reachable from your machine. Neither one changes what address your application binds to inside the container.
ENTRYPOINT vs CMD
ENTRYPOINT is the command that always runs. CMD is the default arguments, and anything you type after the image name replaces them.
image vs container
An image is a read-only template. A container is a running instance of one, with a writable layer on top that disappears when the container is removed.
Kubernetes
readinessProbe vs livenessProbe
Readiness controls whether traffic is sent to a pod. Liveness controls whether the container is restarted. Getting them the wrong way round is how a slow-starting application ends up in a restart loop.
requests vs limits
Requests are what the scheduler reserves for you. Limits are the ceiling the kernel enforces. For memory, hitting the limit is fatal; for CPU it only slows you down.
Something failing right now rather than unclear? Start from the error. Want to check a file rather than read about it? The analyzers read a manifest or Dockerfile and tell you what is wrong with it.