Bird
Raised Fist0
Dockerdevops~10 mins

Exposing ports to host in Docker - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the command to expose port 80 of the container to port 8080 on the host.

Docker
docker run -p [1]:80 nginx
Drag options to blanks, or click blank then click option'
A3000
B8080
C443
D80
Attempts:
3 left
💡 Hint
Common Mistakes
Using the container port as the host port.
Swapping the ports in the mapping.
2fill in blank
medium

Complete the command to expose port 5432 of the container to the same port on the host.

Docker
docker run -p [1]:5432 postgres
Drag options to blanks, or click blank then click option'
A3306
B8080
C5432
D5000
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different host port without reason.
Confusing container port with host port.
3fill in blank
hard

Fix the error in the command to expose port 5000 of the container to port 5000 on the host.

Docker
docker run -p 5000:[1] myapp
Drag options to blanks, or click blank then click option'
A5000
B443
C80
D8080
Attempts:
3 left
💡 Hint
Common Mistakes
Swapping host and container ports.
Using a default port not matching the app.
4fill in blank
hard

Fill both blanks to expose port 3000 of the container to port 4000 on the host and run the container in detached mode.

Docker
docker run [1] -p [2]:3000 myapp
Drag options to blanks, or click blank then click option'
A-d
B-it
C4000
D-rm
Attempts:
3 left
💡 Hint
Common Mistakes
Using interactive mode instead of detached.
Swapping host and container ports.
5fill in blank
hard

Fill all three blanks to expose port 22 of the container to port 2222 on the host, name the container 'ssh-server', and run it in detached mode.

Docker
docker run [1] --name [2] -p [3]:22 sshd
Drag options to blanks, or click blank then click option'
A-d
Bssh-server
C2222
D-it
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting to name the container.
Using wrong port mapping order.
Using interactive mode instead of detached.

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