Bird
Raised Fist0
Dockerdevops~5 mins

Exposing ports to host in Docker - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Exposing ports to host
O(n)
Understanding Time Complexity

We want to understand how the time it takes to expose ports in Docker changes as we expose more ports.

How does adding more ports affect the work Docker does to set up networking?

Scenario Under Consideration

Analyze the time complexity of the following Docker command snippet.

docker run -d \
  -p 8080:80 \
  -p 8081:81 \
  -p 8082:82 \
  nginx

This command runs a container and exposes three ports from the container to the host machine.

Identify Repeating Operations

Look for repeated steps Docker does when exposing ports.

  • Primary operation: Setting up each port mapping between host and container.
  • How many times: Once for each port exposed.
How Execution Grows With Input

Each additional port adds a similar amount of work to set up networking.

Input Size (number of ports)Approx. Operations
1010 setup steps
100100 setup steps
10001000 setup steps

Pattern observation: The work grows directly with the number of ports exposed.

Final Time Complexity

Time Complexity: O(n)

This means the time to expose ports grows linearly with how many ports you expose.

Common Mistake

[X] Wrong: "Exposing many ports happens instantly, no matter how many."

[OK] Correct: Each port requires Docker to set up networking rules, so more ports mean more work and more time.

Interview Connect

Understanding how Docker handles port exposure helps you explain resource use and startup time clearly, a useful skill in real projects.

Self-Check

What if we used a range of ports instead of listing each port separately? How would the time complexity change?

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