๐งญ Docker Port Mapping & CLI Flag CheatSheet
๐ช Port Mapping 101: -p vs -P
| Flag |
Meaning |
Analogy |
Example |
-p <host>:<container> |
Map host port to container port |
Custom Door Mapping ๐ช |
-p 8080:3000 |
-P (uppercase) |
Auto-map all exposed ports to random host ports |
๐ Auto Door Mapping |
-P |
๐ฏ Example 1: Manual Mapping with -p
docker run -p 8080:3000 my-app
- ๐ง Host port 8080 mapped to container's 3000
- Access via
localhost:8080
๐ฒ Example 2: Auto Mapping with -P
docker run -P my-app
- Maps ALL
EXPOSEd ports to random available host ports
- View with
docker ps
๐ Multiple Port Mappings
docker run -p 3000:3000 -p 5000:5000 my-multi-app
- Maps multiple services/APIs or frontend/backend apps
- Great for full-stack containers!
๐ก Exposing Ports in Dockerfile
EXPOSE 3000 5000 7000
| ๐ง Note: |
EXPOSE is just documentation for which ports the container listens to. |
It does not publish or map ports. Use -p or -P in docker run to do that. |
๐ฆ Exposing a Range of Ports
docker run -p 8000-8010:8000-8010 my-app
- Useful for services like WebRTC, game servers, or load balancers needing multiple ports.
- ๐ Keep range symmetrical between host and container.
๐งช Combine with --rm, -it, -d
| Flag |
Meaning |
Emoji |
Use-case |
--rm |
Auto-remove container when it exits |
๐งน |
Clean test runs |
-i |
Interactive (stdin open) |
๐ค |
Needed for terminal apps |
-t |
TTY (format output) |
๐ฅ๏ธ |
Pretty output formatting |
-it |
Combo: interactive + tty |
๐งโ๐ป |
Needed for shell, REPLs |
-d |
Detached mode (run in background) |
๐ธ |
Long-running servers |
๐ฅ Full Command Example
docker run -it --rm -p 4000:3000 my-app
- Runs interactively
- Auto deletes after exit
- Maps port 3000 โ 4000
๐ Run in Detached Mode + Multiple Ports + Clean Exit
docker run -d --rm -p 3000:3000 -p 5000:5000 my-app
- Runs in background
- Auto-cleans after stopping
- Maps frontend + backend
๐ต๏ธโโ๏ธ How to Check Mapped Ports?
docker ps
| Column |
What it Shows |
PORTS |
Host:Container mapping (e.g., 0.0.0.0:8080->3000/tcp) |
๐ Stop a Detached Container
docker stop <container_id>
๐ง Real-World Analogies
| Concept |
Analogy |
| Container port |
๐ฆ Internal phone extension |
| Host port |
โ๏ธ Public phone number |
-p |
Assigning specific number to extension |
-P |
Letting system pick a number for you randomly |
โ
Summary Cheatsheet Table
| Option |
Purpose |
Usage |
-p 8080:80 |
Manual port map |
host:container |
-p 8000-8010:8000-8010 |
Port range mapping |
Bulk apps |
-P |
Auto-map all exposed ports |
Quick tests |
EXPOSE 3000 |
Doc port in Dockerfile |
Doesn't publish |
--rm |
Auto-remove after exit |
Clean containers |
-it |
Interactive terminal |
Needed for shell |
-d |
Run in background |
Daemonized apps |
๐งพ Real Full Example: Production-style Run
docker run -d --rm \
-p 8080:80 \
-p 443:443 \
--name my-nginx \
nginx:alpine
โ
Starts Nginx with HTTP & HTTPS
โ
Cleans itself after docker stop
โ
Runs in background with custom name
๐ง Bonus Tip: Use --network to map ports between containers!
Top comments (0)