Bird
Raised Fist0
Dockerdevops~5 mins

Exposing ports to host in Docker - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does it mean to expose a port in Docker?
Exposing a port means making a port inside the Docker container accessible from the host machine or other containers. It allows communication between the container and the outside world.
Click to reveal answer
beginner
Which Docker command option is used to expose a container port to the host?
The -p or --publish option is used with docker run to map a container port to a host port, like -p 8080:80.
Click to reveal answer
beginner
Explain the syntax -p 8080:80 in Docker port mapping.
It means map port 80 inside the container to port 8080 on the host. So, accessing localhost:8080 on the host reaches port 80 in the container.
Click to reveal answer
intermediate
What is the difference between EXPOSE in Dockerfile and -p in docker run?
EXPOSE in Dockerfile is a hint that the container listens on a port but does not publish it. -p in docker run actually maps the port to the host.
Click to reveal answer
beginner
Can you expose multiple ports from a container to the host? How?
Yes, by using multiple -p options in docker run, for example: -p 8080:80 -p 8443:443 to expose HTTP and HTTPS ports.
Click to reveal answer
Which Docker command option exposes a container port to the host?
A-p
B-e
C-v
D-d
What does -p 3000:3000 do in docker run?
AMaps container port 3000 to host port 80
BRuns container in detached mode
CExposes port 80 inside the container
DMaps host port 3000 to container port 3000
What is the purpose of the EXPOSE instruction in a Dockerfile?
ATo publish ports to the host
BTo document which ports the container listens on
CTo start the container
DTo set environment variables
How do you expose multiple ports from a container?
AUse -e option multiple times
BUse multiple EXPOSE lines in Dockerfile only
CUse multiple -p options in docker run
DUse -d option multiple times
If you run docker run -p 8080:80, how do you access the container's service?
ABy visiting localhost:8080 on the host
BBy visiting localhost:80 on the host
CBy visiting container IP:8080
DBy visiting container IP:80
Describe how to expose a container port to the host using Docker commands.
Think about how to connect container ports to your computer ports.
You got /3 concepts.
    Explain the difference between EXPOSE in Dockerfile and the -p option in docker run.
    One is for documentation, the other for actual port access.
    You got /3 concepts.

      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