Bird
Raised Fist0
Dockerdevops~10 mins

Port mapping with -p flag in Docker - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Port mapping with -p flag
Start Docker Container
↓
Use -p flag: hostPort:containerPort
↓
Docker maps hostPort to containerPort
↓
Host can access container service via hostPort
↓
Container listens on containerPort internally
↓
End
This flow shows how Docker uses the -p flag to connect a port on your computer (host) to a port inside the container, allowing access to container services.
Execution Sample
Docker
docker run -p 8080:80 nginx
Runs an nginx container mapping host port 8080 to container port 80.
Process Table
StepCommand PartActionResultNotes
1docker runStart containerContainer created and startedBase command to run container
2-p 8080:80Map portsHost port 8080 linked to container port 80Enables access from host to container service
3nginxSelect imagenginx image pulled (if needed) and usedContainer runs nginx server
4Container runningListen on port 80nginx listens inside container on port 80Internal container port
5Host accessConnect to localhost:8080Request forwarded to container port 80User accesses nginx via host port
6ExitStop containerContainer stopsEnd of container lifecycle
💡 Container stops or user interrupts; port mapping ends with container lifecycle
Status Tracker
VariableStartAfter Step 2After Step 4Final
hostPortnone808080808080
containerPortnone808080
containerStatenot runningrunningrunningstopped
Key Moments - 3 Insights
Why do we write -p 8080:80 and not just -p 80?
The execution_table row 2 shows that -p 8080:80 maps host port 8080 to container port 80. Without specifying host port, Docker assigns a random port on the host, which may be hard to access.
Does the container listen on port 8080 inside?
No, as shown in execution_table row 4, the container listens on port 80 internally. Port 8080 is only on the host side.
What happens if the host port 8080 is already in use?
Docker will fail to start the container with an error because it cannot bind host port 8080. This is implied by the port mapping step in execution_table row 2.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what port does the container listen on internally?
A8080
B443
C80
DNone
💡 Hint
Check Step 4 in execution_table where container listens on port 80
At which step is the host port 8080 linked to the container port?
AStep 1
BStep 2
CStep 3
DStep 5
💡 Hint
Look at Step 2 in execution_table where -p 8080:80 is processed
If you change the command to -p 9090:80, what changes in variable_tracker?
AhostPort changes to 9090
BcontainerPort changes to 9090
CcontainerState changes to 9090
DNo changes
💡 Hint
See variable_tracker hostPort value after Step 2
Concept Snapshot
docker run -p hostPort:containerPort image
- Maps a port on your computer (hostPort) to a port inside the container (containerPort).
- Allows accessing container services via localhost:hostPort.
- Container listens internally on containerPort.
- Host port must be free to bind.
- Example: docker run -p 8080:80 nginx
Full Transcript
This visual execution shows how Docker's -p flag maps a port from your computer to a container. When you run 'docker run -p 8080:80 nginx', Docker starts an nginx container listening on port 80 inside. The host port 8080 is linked to container port 80, so accessing localhost:8080 reaches nginx. The execution table traces each step: starting container, mapping ports, running nginx, and stopping container. Variables track hostPort and containerPort values. Key moments clarify why both ports are needed and what happens if ports conflict. The quiz tests understanding of port mapping steps and variable changes. This helps beginners see how Docker connects host and container ports clearly.

Practice

(1/5)
1.

What does the -p flag do in the docker run command?

easy
A. Names the container
B. Sets the container's CPU limit
C. Maps a port on the host to a port in the container
D. Specifies the container's environment variables

Solution

  1. Step 1: Understand the purpose of the -p flag

    The -p flag is used to connect a port on your computer (host) to a port inside the Docker container.
  2. Step 2: Identify what port mapping means

    This mapping allows you to access services running inside the container from your host machine using the specified port.
  3. Final Answer:

    Maps a port on the host to a port in the container -> Option C
  4. Quick Check:

    -p flag = port mapping [OK]
Hint: Remember: -p connects host port to container port [OK]
Common Mistakes:
  • Confusing -p with CPU or memory limits
  • Thinking -p sets container name
  • Assuming -p sets environment variables
2.

Which of the following is the correct syntax to map host port 8080 to container port 80?

docker run -p ??? image_name
easy
A. -p 8080:80
B. -p 80:8080
C. -p 8080-80
D. -p 80-8080

Solution

  1. Step 1: Recall the port mapping format

    The correct format is -p host_port:container_port, so the host port comes first.
  2. Step 2: Apply the ports given

    Host port is 8080, container port is 80, so it should be -p 8080:80.
  3. Final Answer:

    -p 8080:80 -> Option A
  4. Quick Check:

    Host port first, container port second [OK]
Hint: Host port comes before container port in -p [OK]
Common Mistakes:
  • Swapping host and container ports
  • Using dash (-) instead of colon (:)
  • Using invalid port range syntax
3.

What will happen if you run this command?
docker run -p 5000:80 nginx
Then open http://localhost:5000 in your browser?

medium
A. Nothing happens because port 5000 is not mapped
B. You will see the default Nginx welcome page
C. You will see a Docker error about port mapping
D. Connection refused error because port 80 is blocked

Solution

  1. Step 1: Understand the port mapping

    The command maps host port 5000 to container port 80 where Nginx serves its default page.
  2. Step 2: Accessing the service

    Opening http://localhost:5000 accesses the container's port 80 service, showing Nginx's default page.
  3. Final Answer:

    You will see the default Nginx welcome page -> Option B
  4. Quick Check:

    Port 5000 maps to Nginx port 80, page loads [OK]
Hint: Host port maps to container port, access via host port [OK]
Common Mistakes:
  • Thinking port 80 on host is used
  • Assuming port mapping causes errors
  • Not realizing Nginx serves on port 80 inside container
4.

What is wrong with this command?
docker run -p 80:8080 myapp

The app inside the container listens on port 8080.

medium
A. Host port 80 is mapped to container port 8080, which is correct
B. The ports are reversed; it should be -p 8080:80
C. The container port should be 80 if the app listens on 8080
D. Nothing is wrong; this command works as expected

Solution

  1. Step 1: Check the app's listening port

    The app listens on container port 8080, so container port must be 8080 in mapping.
  2. Step 2: Verify the port mapping syntax

    The command maps host port 80 to container port 8080, which is correct to expose app on host port 80.
  3. Final Answer:

    Host port 80 is mapped to container port 8080, which is correct -> Option A
  4. Quick Check:

    Host:container = 80:8080 is valid [OK]
Hint: Remember: host port first, container port second [OK]
Common Mistakes:
  • Swapping host and container ports
  • Assuming container port must be 80
  • Confusing app listening port with host port
5.

You want to run two containers from the same image that both expose port 80 inside the container. How can you map their ports so both are accessible on your host machine?

hard
A. You cannot run two containers exposing the same port
B. Use -p 80:80 for both containers
C. Use -p 80:8080 for the first and -p 80:8081 for the second
D. Use -p 8080:80 for the first and -p 8081:80 for the second container

Solution

  1. Step 1: Understand port conflicts on host

    Two containers cannot map the same host port (like 80) simultaneously because the host port must be unique.
  2. Step 2: Assign different host ports

    Map the first container's port 80 to host port 8080, and the second container's port 80 to host port 8081 to avoid conflicts.
  3. Final Answer:

    Use -p 8080:80 for the first and -p 8081:80 for the second container -> Option D
  4. Quick Check:

    Different host ports avoid conflicts [OK]
Hint: Use different host ports for multiple containers [OK]
Common Mistakes:
  • Trying to map both containers to host port 80
  • Swapping host and container ports
  • Thinking containers can share the same host port
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard