To allow two Docker containers to communicate with each other, you can use a Docker network. Here's how to set it up:
Step 1: Create a Docker Network
First, create a user-defined network. This allows containers on the network to communicate with each other by their container names.
docker network create my_network
Step 2: Run Containers on the Same Network
When starting each container, specify the network you created.
For example:
docker run -d --name container1 --network my_network my_image1 docker run -d --name container2 --network my_network my_image2
Now, container1
and container2
are both on my_network
and can communicate.
Step 3: Access Each Other by Container Name
Within container1
, you can access container2
by its name, container2
, and vice versa. For instance, you could use ping
:
docker exec -it container1 ping container2
Or connect through a service port (e.g., for HTTP):
curl http://container2:port
Additional Tips:
- Ports: If your containers expose services on specific ports (e.g., HTTP on port 80), make sure those services are listening on the correct port within the container.
- DNS Resolution: Docker's network handles the DNS resolution automatically, so using container names as hostnames works seamlessly in user-defined networks.
- Inspect Network : Run
docker network inspect my_network
to verify that both containers are connected.