π§ 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
EXPOSE
d 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)