📖 Scenario: You are working on a small project where two Docker containers need to talk to each other. One container runs a simple web server, and the other container will send requests to it. To make this communication possible, you need to set up container networking correctly.
🎯 Goal: Learn how to create a Docker network and connect two containers so they can communicate. You will create a network, run two containers attached to that network, and verify they can reach each other.
📋 What You'll Learn
Create a Docker network named my_network
Run a container named web_server using the nginx image attached to my_network
Run a container named client using the alpine image attached to my_network
Use the ping command inside the client container to check connectivity to web_server
💡 Why This Matters
🌍 Real World
In real projects, containers often need to communicate, like a web app talking to a database. Setting up container networking correctly makes this possible.
💼 Career
Understanding container networking is essential for DevOps roles, as it helps manage microservices and containerized applications efficiently.
Progress0 / 4 steps
1
Create a Docker network
Create a Docker network called my_network using the docker network create command.
Docker
Hint
Use the command docker network create my_network to create a new network.
2
Run the web server container on the network
Run a container named web_server using the nginx image. Attach it to the my_network network using the --network option.
Docker
Hint
Use docker run -d --name web_server --network my_network nginx to start the web server container.
3
Run the client container on the network
Run a container named client using the alpine image. Attach it to the my_network network using the --network option. Start it with an interactive shell using sh.
Docker
Hint
Use docker run -it --name client --network my_network alpine sh to start the client container with a shell.
4
Test connectivity from client to web server
Inside the client container shell, run the command ping -c 3 web_server to check if the client can reach the web server container by its name.
Docker
Hint
Use ping -c 3 web_server inside the client container to test connectivity.
Practice
(1/5)
1. Why is container networking important in Docker?
easy
A. It allows containers to communicate and share data with each other.
B. It speeds up the container startup time.
C. It reduces the size of container images.
D. It automatically updates containers to the latest version.
Solution
Step 1: Understand container communication
Containers need to talk to each other to share data and work together in an app.
Step 2: Recognize networking role
Networking connects containers so they can send messages and data between them.
Final Answer:
It allows containers to communicate and share data with each other. -> Option A
Quick Check:
Container networking = communication [OK]
Hint: Networking connects containers to share data easily [OK]
Common Mistakes:
Thinking networking speeds up startup
Confusing networking with image size
Assuming networking updates containers
2. Which Docker command correctly creates a new network named my-net?
easy
A. docker network new my-net
B. docker create network my-net
C. docker network create my-net
D. docker net create my-net
Solution
Step 1: Recall Docker network creation syntax
The correct command starts with docker network create followed by the network name.
Step 2: Match the command to options
Only docker network create my-net uses the correct syntax: docker network create my-net.
Final Answer:
docker network create my-net -> Option C
Quick Check:
Correct syntax = docker network create [OK]
Hint: Use 'docker network create' to make networks [OK]
Common Mistakes:
Swapping 'create' and 'network' order
Using 'new' instead of 'create'
Shortening 'network' to 'net'
3. What will happen if you run docker run --network my-net nginx assuming my-net exists?
medium
A. The nginx container will connect to the my-net network and be able to communicate with other containers on it.
B. The container will fail to start because my-net is not a valid network.
C. The container will start but will not be connected to any network.
D. The container will connect to the default bridge network instead.
Solution
Step 1: Understand the --network flag
The --network option connects the container to the specified network if it exists.
Step 2: Check network existence and effect
Since my-net exists, the container joins it and can communicate with others on that network.
Final Answer:
The nginx container will connect to the my-net network and be able to communicate with other containers on it. -> Option A
Quick Check:
--network connects container to specified network [OK]
Hint: Use --network to join existing networks [OK]
Common Mistakes:
Assuming container fails if network exists
Thinking container starts without network
Believing default network is used when specified
4. You tried to connect a container to a network using docker run --network my-net nginx but got an error: network my-net not found. What is the likely cause?
medium
A. The container name conflicts with the network name.
B. The nginx image is incompatible with custom networks.
C. The Docker daemon is not running.
D. The network my-net was not created before running the container.
Solution
Step 1: Analyze the error message
The error says network my-net not found, meaning Docker can't find that network.
Step 2: Identify common causes
This usually happens if the network was never created or was deleted before running the container.
Final Answer:
The network my-net was not created before running the container. -> Option D
Quick Check:
Network must exist before use [OK]
Hint: Create network before using it with containers [OK]
Common Mistakes:
Blaming image compatibility
Assuming Docker daemon stopped
Confusing container and network names
5. You have two containers: a web app and a database. You want the web app to access the database securely without exposing the database port to the outside. Which Docker networking approach should you use?
hard
A. Use the host network mode for both containers.
B. Create a user-defined bridge network and connect both containers to it.
C. Expose the database port to the host and connect the web app via localhost.
D. Run both containers without any network to isolate them.
Solution
Step 1: Understand secure container communication
To keep the database private, containers should communicate on an isolated network, not exposing ports to the outside.
Step 2: Choose the right network type
A user-defined bridge network allows containers to talk securely and privately without exposing ports externally.
Step 3: Evaluate other options
Host mode shares the host network (less secure), exposing ports risks outside access, and no network prevents communication.
Final Answer:
Create a user-defined bridge network and connect both containers to it. -> Option B
Quick Check:
User-defined bridge = secure container communication [OK]
Hint: Use user-defined bridge for private container communication [OK]
Common Mistakes:
Using host mode exposing host network
Exposing database port publicly
Isolating containers with no network
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.