Bird
Raised Fist0
Dockerdevops~20 mins

Exposing ports to host in Docker - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Port Exposure Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output of the port mapping command?
You run the command docker run -d -p 8080:80 nginx. What does this command do?
AStarts an nginx container with port 80 inside mapped to port 80 on the host.
BStarts an nginx container with port 8080 inside mapped to port 80 on the host.
CStarts an nginx container with port 80 inside mapped to port 8080 on the host.
DStarts an nginx container with port 8080 inside mapped to port 8080 on the host.
Attempts:
2 left
💡 Hint
The format is -p hostPort:containerPort.
🧠 Conceptual
intermediate
1:30remaining
Why expose ports in Docker containers?
Why do we expose ports from a Docker container to the host machine?
ATo allow network traffic from the host to reach services inside the container.
BTo increase the container's CPU usage.
CTo make the container use more memory.
DTo stop the container from running.
Attempts:
2 left
💡 Hint
Think about how you access a website running inside a container.
❓ Configuration
advanced
2:00remaining
Which Docker Compose port mapping is correct?
Given this Docker Compose snippet, which option correctly maps port 5000 inside the container to port 3000 on the host?
Docker
services:
  app:
    image: myapp
    ports:
A- "3000"
B- "5000:3000"
C- "5000"
D- "3000:5000"
Attempts:
2 left
💡 Hint
Remember the format is hostPort:containerPort.
❓ Troubleshoot
advanced
2:30remaining
Why can't you access the container service on the host port?
You ran docker run -d -p 8080:80 nginx but cannot access the web server at http://localhost:8080. What could be the reason?
AThe container's service is not listening on port 80 inside the container.
BThe host port 8080 is blocked by firewall.
CDocker daemon is not running.
DThe container image is missing.
Attempts:
2 left
💡 Hint
Check if the service inside the container is running on the expected port.
✅ Best Practice
expert
3:00remaining
What is the best practice for exposing ports in production Docker containers?
Which option is the best practice for exposing ports when running Docker containers in production?
AExpose ports randomly to confuse attackers.
BExpose only necessary ports and use firewall rules to restrict access.
CDo not expose any ports and rely on container internal networking only.
DExpose all container ports to the host for easy access.
Attempts:
2 left
💡 Hint
Think about security and minimal exposure.

Practice

(1/5)
1.

What does the Docker option -p 8080:80 do when running a container?

easy
A. It maps port 8080 inside the container to port 80 on the host machine.
B. It maps port 80 inside the container to port 8080 on the host machine.
C. It exposes port 8080 inside the container without mapping to the host.
D. It blocks port 80 on the host machine.

Solution

  1. Step 1: Understand Docker port mapping syntax

    The syntax -p host_port:container_port means the host port is on the left and container port is on the right.
  2. Step 2: Apply to given ports

    Given -p 8080:80, port 80 inside the container is accessible via port 8080 on the host.
  3. Final Answer:

    It maps port 80 inside the container to port 8080 on the host machine. -> Option B
  4. Quick Check:

    host_port:container_port = 8080:80 [OK]
Hint: Remember host port is before colon, container port after [OK]
Common Mistakes:
  • Confusing host and container ports order
  • Thinking ports are blocked instead of mapped
  • Assuming ports are exposed but not mapped
2.

Which of the following is the correct Docker command to expose container port 5000 to host port 3000?

docker run ... myapp
easy
A. docker run -p 3000:5000 myapp
B. docker run -p 5000 myapp
C. docker run --expose 3000:5000 myapp
D. docker run -p 5000:3000 myapp

Solution

  1. Step 1: Recall port mapping syntax

    The correct syntax is -p host_port:container_port.
  2. Step 2: Match ports to command

    To expose container port 5000 on host port 3000, use -p 3000:5000.
  3. Final Answer:

    docker run -p 3000:5000 myapp -> Option A
  4. Quick Check:

    host_port:container_port = 3000:5000 [OK]
Hint: Host port is always before colon in -p option [OK]
Common Mistakes:
  • Swapping host and container ports
  • Using --expose with port mapping syntax
  • Omitting container port in -p option
3.

What will be the output when running this command and then accessing http://localhost:8080?

docker run -d -p 8080:80 nginx
medium
A. Docker will throw a syntax error and not run.
B. Connection refused error because port 80 is not exposed.
C. The container will run but port 8080 will be closed.
D. You will see the default Nginx welcome page in your browser.

Solution

  1. Step 1: Understand the command

    The command runs Nginx container detached with port 80 inside mapped to host port 8080.
  2. Step 2: Accessing localhost:8080

    Since port 8080 on host maps to container's port 80 where Nginx serves, accessing localhost:8080 shows Nginx default page.
  3. Final Answer:

    You will see the default Nginx welcome page in your browser. -> Option D
  4. Quick Check:

    Port mapping works, Nginx serves on port 80 [OK]
Hint: Map container port 80 to host to access web server [OK]
Common Mistakes:
  • Assuming port 80 is not exposed automatically
  • Expecting syntax error from correct command
  • Thinking container runs but ports are closed
4.

Identify the error in this Docker command that tries to expose port 3306:

docker run -p 3306: mysql
medium
A. Missing container port in the -p option.
B. Port 3306 is not allowed to be exposed.
C. The image name 'mysql' is incorrect.
D. The command should use --expose instead of -p.

Solution

  1. Step 1: Check -p option syntax

    The -p option requires both host and container ports in host_port:container_port format.
  2. Step 2: Analyze given command

    The command uses -p 3306: without specifying container port, which is invalid syntax.
  3. Final Answer:

    Missing container port in the -p option. -> Option A
  4. Quick Check:

    -p requires host_port:container_port [OK]
Hint: Always specify both host and container ports with -p [OK]
Common Mistakes:
  • Using only one port number with -p
  • Confusing --expose and -p options
  • Assuming image name causes port errors
5.

You want to run two containers both exposing port 80 inside, but accessible on host ports 8081 and 8082 respectively. Which Docker commands correctly achieve this?

hard
A. docker run -d -p 8081:8081 app1 && docker run -d -p 8082:8082 app2
B. docker run -d -p 80:8081 app1 && docker run -d -p 80:8082 app2
C. docker run -d -p 8081:80 app1 && docker run -d -p 8082:80 app2
D. docker run -d --expose 8081:80 app1 && docker run -d --expose 8082:80 app2

Solution

  1. Step 1: Understand port mapping for multiple containers

    Each container exposes port 80 internally. To avoid conflict, map to different host ports like 8081 and 8082.
  2. Step 2: Check each option's correctness

    docker run -d -p 8081:80 app1 && docker run -d -p 8082:80 app2 correctly maps host ports 8081 and 8082 to container port 80 for app1 and app2 respectively. Others misuse port order or --expose.
  3. Final Answer:

    docker run -d -p 8081:80 app1 && docker run -d -p 8082:80 app2 -> Option C
  4. Quick Check:

    Host ports differ, container ports 80 mapped correctly [OK]
Hint: Map different host ports to same container port for multiple containers [OK]
Common Mistakes:
  • Swapping host and container ports
  • Using same host port for multiple containers
  • Confusing --expose with port mapping
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