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