0
0
DockerConceptBeginner · 3 min read

What is EXPOSE in Dockerfile: Explanation and Usage

The EXPOSE instruction in a Dockerfile tells Docker which network ports the container will listen on at runtime. It acts as a form of documentation and helps Docker map ports when running containers, but it does not publish the ports by itself.
⚙️

How It Works

The EXPOSE instruction in a Dockerfile is like putting a sign on a house that says "I have a door here." It tells Docker and anyone reading the Dockerfile which ports inside the container are intended to be used for communication.

However, just like a sign doesn't open the door, EXPOSE does not actually open or publish the port to the outside world. It only marks the port as available inside the container. To make the port accessible from outside, you still need to use the -p or --publish option when running the container.

This helps keep things organized and clear, especially when sharing images or working in teams, by showing which ports the application inside the container expects to use.

💻

Example

This example Dockerfile exposes port 8080, indicating the container listens on this port.

dockerfile
FROM nginx:alpine
EXPOSE 8080
CMD ["nginx", "-g", "daemon off;"]
Output
When you build and run this container, Docker knows port 8080 is used inside. To access it from outside, run: docker run -p 8080:8080 <image-name>
🎯

When to Use

Use EXPOSE in your Dockerfile to document which ports your application listens on inside the container. This is helpful for others who use your image or for yourself when managing multiple containers.

It is especially useful in multi-container setups or when using Docker Compose, as it clarifies network communication between containers.

Remember, EXPOSE alone does not make the port accessible outside the container; you must publish the port when running the container if you want external access.

Key Points

  • EXPOSE declares ports the container listens on.
  • It acts as documentation and helps Docker networking tools.
  • It does not publish or open ports externally by itself.
  • Use -p or --publish to map ports to the host.
  • Helps in multi-container communication and clarity.

Key Takeaways

EXPOSE marks ports inside the container for documentation and tooling.
It does not open or publish ports to the host automatically.
Use -p or --publish with docker run to access ports externally.
EXPOSE improves clarity in multi-container and team environments.
Always specify ports your app listens on to avoid confusion.