Bird
Raised Fist0
Dockerdevops~5 mins

EXPOSE instruction for ports in Docker - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the EXPOSE instruction do in a Dockerfile?
It tells Docker which ports the container will listen on at runtime. It acts as documentation and helps Docker map ports when running containers.
Click to reveal answer
beginner
Does the EXPOSE instruction publish ports to the host machine automatically?
No. EXPOSE only documents the ports. To make ports accessible outside the container, you must use the -p or --publish option with docker run.
Click to reveal answer
intermediate
How do you expose multiple ports in a Dockerfile?
You can use multiple EXPOSE instructions, one per port, or list multiple ports separated by spaces in a single EXPOSE instruction.
Click to reveal answer
beginner
Example: What does this line do? EXPOSE 80 443
It declares that the container listens on ports 80 and 443. This helps users know which ports to map when running the container.
Click to reveal answer
intermediate
Can EXPOSE specify the protocol (TCP/UDP) for a port?
Yes. You can specify the protocol by adding /tcp or /udp after the port number, like EXPOSE 53/udp. If omitted, TCP is assumed.
Click to reveal answer
What is the main purpose of the EXPOSE instruction in a Dockerfile?
ATo set environment variables
BTo automatically publish ports to the host
CTo build the container image
DTo document which ports the container listens on
How do you make a container port accessible from the host machine?
AUse the EXPOSE instruction in the Dockerfile
BUse the -p or --publish option with docker run
CAdd the port to the CMD instruction
DSet the port in the ENV instruction
Which of these is a valid way to expose ports 80 and 443 in a Dockerfile?
AEXPOSE 80 443
BEXPOSE 80,443
CEXPOSE 80; EXPOSE 443
DEXPOSE 80:443
What protocol does EXPOSE assume if none is specified?
AUDP
BHTTP
CTCP
DFTP
Which command publishes container port 8080 to host port 80?
Adocker run -p 80:8080 image
Bdocker run -p 8080:80 image
Cdocker run --expose 80:8080 image
Ddocker run --publish 8080 image
Explain the role of the EXPOSE instruction in a Dockerfile and how it relates to port publishing.
Think about what EXPOSE tells Docker and what it does not do.
You got /3 concepts.
    Describe how to expose multiple ports and specify protocols using the EXPOSE instruction.
    Consider how to list ports and add protocol details.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the EXPOSE instruction in a Dockerfile?
      easy
      A. To start the container with a specific port
      B. To automatically publish ports to the host machine
      C. To document which ports the container listens on
      D. To stop the container from using any ports

      Solution

      1. Step 1: Understand the role of EXPOSE

        The EXPOSE instruction tells Docker which ports the container will listen on internally.
      2. Step 2: Clarify what EXPOSE does not do

        EXPOSE does not publish or map ports to the host automatically; it only documents them.
      3. Final Answer:

        To document which ports the container listens on -> Option C
      4. Quick Check:

        EXPOSE documents ports, does not publish them [OK]
      Hint: EXPOSE documents ports, doesn't publish them automatically [OK]
      Common Mistakes:
      • Thinking EXPOSE publishes ports to host
      • Confusing EXPOSE with port mapping
      • Assuming EXPOSE starts container on a port
      2. Which of the following is the correct syntax to expose port 8080 in a Dockerfile?
      easy
      A. EXPOSE 8080
      B. EXPOSE:8080
      C. EXPOSE(port=8080)
      D. EXPOSE[8080]

      Solution

      1. Step 1: Recall Dockerfile EXPOSE syntax

        The correct syntax is simply EXPOSE followed by the port number without any punctuation.
      2. Step 2: Check each option

        Options A, B, and C use invalid syntax with brackets, colons, or parentheses which are not allowed.
      3. Final Answer:

        EXPOSE 8080 -> Option A
      4. Quick Check:

        Correct syntax is EXPOSE followed by port number [OK]
      Hint: EXPOSE followed by space and port number is correct [OK]
      Common Mistakes:
      • Using colons or parentheses in EXPOSE
      • Adding brackets around port number
      • Writing EXPOSE in lowercase
      3. Given this Dockerfile snippet:
      FROM nginx
      EXPOSE 80
      EXPOSE 443

      What ports will the container listen on internally?
      medium
      A. Ports 80 and 443
      B. Only port 443
      C. Only port 80
      D. No ports are exposed

      Solution

      1. Step 1: Identify all EXPOSE instructions

        The Dockerfile exposes port 80 and port 443 explicitly.
      2. Step 2: Understand multiple EXPOSE usage

        Multiple EXPOSE lines add ports cumulatively, so both ports are exposed internally.
      3. Final Answer:

        Ports 80 and 443 -> Option A
      4. Quick Check:

        Multiple EXPOSE lines add ports together [OK]
      Hint: Multiple EXPOSE lines add ports cumulatively [OK]
      Common Mistakes:
      • Assuming only the last EXPOSE counts
      • Thinking EXPOSE publishes ports to host
      • Ignoring multiple EXPOSE instructions
      4. You wrote this Dockerfile snippet:
      EXPOSE 80 443

      But Docker build gives an error. What is wrong?
      medium
      A. Port numbers must be in quotes
      B. Ports must be separated by commas
      C. EXPOSE must be lowercase
      D. EXPOSE cannot list multiple ports on one line

      Solution

      1. Step 1: Check EXPOSE syntax rules

        EXPOSE accepts multiple ports on one line separated by spaces; it does not require multiple EXPOSE lines.
      2. Step 2: Validate other options

        Ports do not need quotes, EXPOSE is uppercase by convention, and commas are not used to separate ports.
      3. Final Answer:

        EXPOSE cannot list multiple ports on one line -> Option D
      4. Quick Check:

        One port per EXPOSE line only [OK]
      Hint: Use one EXPOSE per port, no spaces or commas [OK]
      Common Mistakes:
      • Listing multiple ports on one EXPOSE line
      • Adding quotes around port numbers
      • Writing EXPOSE in lowercase
      5. You want to run a web app container that listens on port 3000 inside the container. You want to access it on port 8080 on your host machine. Which Docker commands and Dockerfile instructions correctly achieve this?
      hard
      A. Dockerfile: EXPOSE 8080
      Run: docker run -p 3000:8080 image
      B. Dockerfile: EXPOSE 3000
      Run: docker run -p 8080:3000 image
      C. Dockerfile: EXPOSE 3000 8080
      Run: docker run -p 3000:8080 image
      D. Dockerfile: EXPOSE 8080
      Run: docker run -p 8080:8080 image

      Solution

      1. Step 1: Understand EXPOSE and port mapping

        EXPOSE should list the internal container port (3000). The run command maps host port 8080 to container port 3000.
      2. Step 2: Check each option's correctness

        Dockerfile: EXPOSE 3000
        Run: docker run -p 8080:3000 image correctly exposes 3000 and maps 8080 on host to 3000 in container. Others either reverse ports or use invalid EXPOSE syntax.
      3. Final Answer:

        Dockerfile: EXPOSE 3000 and run with -p 8080:3000 -> Option B
      4. Quick Check:

        EXPOSE internal port, map host:container ports correctly [OK]
      Hint: EXPOSE internal port; map host port to container port with -p [OK]
      Common Mistakes:
      • Exposing wrong port inside Dockerfile
      • Reversing host and container ports in -p
      • Listing multiple ports in one EXPOSE line
      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