Docker dynamic ports ¶
Docker dynamically assigns host machine ports that map into container application ports.
Inside the Devcontainer ¶
The Devcontainer can bind to a single container’s port(s) and present those to your localhost machine via VS Code. Other services started along with the Devcontainer are not visible in VS Code. See Outside the Devconatiner for how to find information on those.
Once started with F5, the
benefits Django application runs on port
8000 inside the Devcontainer. To find the localhost
address, look on the PORTS tab in VS Code’s Terminal window. The
Local Address corresponding to the record where
8000 is in the
Port column is where the site is accessible on your host machine.
localhost and use the same port number shown in the
Local Address column. This is highlighted by the
red box in the image below:
Outside the Devcontainer ¶
When running a
docker compose ... command, or in other scenarios outside of the Devcontainer, there are multiple ways to find
http://localhost port corresponding to the service in question.
Docker Desktop ¶
The Docker Desktop application shows information about running containers and services/groups, including information about bound ports. In most cases, the application provides a button to launch a container/service directly in your browser when a port binding is available.
In the Containers / Apps tab, expand the service group if needed to find the container in question, where you should see
labels indicating the container is
RUNNING and bound to
Hover over the container in question, and click the Open in Browser button to launch the app in your web browser.
Docker CLI commands ¶
docker command line interface, you can find the bound port(s) of running containers.
docker ps -f name=<service>
e.g. for the
docker ps -f name=docs
This prints output like the following:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0d5b2e1fb910 benefits_client:dev "mkdocs serve --dev-…" 2 minutes ago Up 2 minutes 0.0.0.0:62093->8000/tcp benefits_docs_1
Looking at the
We can see that locally, port
62093 is bound to the container port
In this case, entering
http://localhost:62093 in the web browser navigates to the
docs site homepage.