Bird
Raised Fist0
Dockerdevops~5 mins

Container DNS and service discovery in Docker - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is service discovery in container environments?
Service discovery is the process that allows containers to find and communicate with each other automatically without hardcoding IP addresses.
Click to reveal answer
beginner
How does Docker's embedded DNS server help containers communicate?
Docker provides an embedded DNS server that resolves container names to their IP addresses within a user-defined network, enabling containers to reach each other by name.
Click to reveal answer
intermediate
What is the role of Docker networks in service discovery?
Docker networks isolate containers and provide DNS-based service discovery so containers on the same network can find each other by container name.
Click to reveal answer
intermediate
Explain how to use container names for service discovery in Docker Compose.
In Docker Compose, services can reach each other by using the service name as a hostname because Compose creates a default network with embedded DNS resolving service names.
Click to reveal answer
intermediate
What happens if containers are not on the same Docker network regarding DNS resolution?
If containers are on different Docker networks, they cannot resolve each other's names via Docker's embedded DNS, so service discovery by name will fail unless external DNS or other methods are used.
Click to reveal answer
What does Docker's embedded DNS server do?
AManages container storage volumes
BBlocks network traffic between containers
CAssigns static IP addresses to containers
DResolves container names to IP addresses within a Docker network
How can containers communicate by name in Docker Compose?
ABy using the service names as hostnames
BBy using IP addresses only
CBy configuring external DNS servers manually
DBy sharing the same storage volume
What is required for Docker containers to resolve each other's names automatically?
AThey must have static IP addresses
BThey must use host networking mode
CThey must be on the same Docker network
DThey must run on the same physical host
If two containers are on different Docker networks, what happens when one tries to resolve the other's name?
AThe containers communicate through the host network
BThe DNS resolution fails
CThe containers share the same IP address
DThe containers automatically connect
Which Docker command creates a user-defined network that supports service discovery?
Adocker network create my-network
Bdocker volume create my-network
Cdocker run --network=host
Ddocker build my-network
Describe how Docker's embedded DNS and user-defined networks enable service discovery between containers.
Think about how containers find each other without hardcoded IPs.
You got /4 concepts.
    Explain why service discovery might fail if containers are on different Docker networks and how to fix it.
    Consider Docker's network isolation and DNS scope.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does Docker's built-in DNS service provide for containers on the same user-defined network?
      easy
      A. It assigns static IP addresses to containers.
      B. It allows containers to find each other by their container names.
      C. It disables network communication between containers.
      D. It automatically updates container images.

      Solution

      1. Step 1: Understand Docker user-defined networks

        User-defined networks enable containers to communicate using DNS names instead of IP addresses.
      2. Step 2: Role of Docker DNS service

        Docker's DNS service resolves container names to their current IP addresses on the same network.
      3. Final Answer:

        It allows containers to find each other by their container names. -> Option B
      4. Quick Check:

        Docker DNS = container name resolution [OK]
      Hint: Containers use names, not IPs, to find each other on user networks [OK]
      Common Mistakes:
      • Thinking Docker assigns static IPs by default
      • Believing DNS disables container communication
      • Confusing DNS with image updates
      2. Which Docker command correctly creates a user-defined network named my-net to enable container DNS service discovery?
      easy
      A. docker network create my-net
      B. docker create network my-net
      C. docker network new my-net
      D. docker network build my-net

      Solution

      1. Step 1: Identify correct Docker network creation syntax

        The correct command to create a network is docker network create <name>.
      2. Step 2: Verify options

        The options using 'docker network new', 'docker create network', and 'docker network build' have incorrect syntax; only docker network create my-net matches Docker syntax.
      3. Final Answer:

        docker network create my-net -> Option A
      4. Quick Check:

        Correct command = docker network create [OK]
      Hint: Use 'docker network create' to make user-defined networks [OK]
      Common Mistakes:
      • Using 'docker create network' instead of 'docker network create'
      • Confusing 'new' or 'build' with network creation
      • Omitting the network name
      3. Given two containers web and db on the same user-defined network, what will be the output of docker exec web ping -c 1 db if db is running?
      medium
      A. Ping succeeds showing db IP address and response time.
      B. Ping fails with 'unknown host db' error.
      C. Ping succeeds but shows IP of web container.
      D. Ping command is not available inside containers.

      Solution

      1. Step 1: Understand container DNS on user-defined networks

        Containers on the same user-defined network can resolve each other's names to IP addresses.
      2. Step 2: Effect of ping command

        Running ping from web to db will resolve db to its IP and send ICMP packets successfully if db is running.
      3. Final Answer:

        Ping succeeds showing db IP address and response time. -> Option A
      4. Quick Check:

        Container DNS + ping = success if target running [OK]
      Hint: Ping container name on same network to test DNS and connectivity [OK]
      Common Mistakes:
      • Assuming ping fails due to IP changes
      • Confusing container names with hostnames outside network
      • Believing ping is unavailable inside containers
      4. You created two containers on a user-defined network, but web cannot resolve db by name. What is the most likely cause?
      medium
      A. The web container has no network interface.
      B. The db container is stopped.
      C. Docker daemon is not running.
      D. Containers are on different Docker networks.

      Solution

      1. Step 1: Check network configuration

        Containers must be on the same user-defined network for DNS name resolution to work.
      2. Step 2: Analyze failure cause

        If web cannot resolve db, they are likely on different networks, so DNS does not link them.
      3. Final Answer:

        Containers are on different Docker networks. -> Option D
      4. Quick Check:

        Different networks block DNS resolution [OK]
      Hint: Ensure containers share the same user-defined network for DNS [OK]
      Common Mistakes:
      • Assuming stopped container causes DNS failure (it causes ping failure)
      • Thinking Docker daemon status affects container DNS directly
      • Believing container can lack network interface if running
      5. You want to deploy a multi-container app with a web server and database. You want the web server to always connect to the database by name, even if the database container restarts and gets a new IP. Which Docker setup ensures this?
      hard
      A. Run containers on separate networks and link them with --link option.
      B. Use the default bridge network and hardcode the database container's IP address in the web server config.
      C. Create a user-defined network and run both containers attached to it; use the database container's name in the web server config.
      D. Assign static IPs manually to both containers on the default network.

      Solution

      1. Step 1: Understand service discovery with user-defined networks

        User-defined networks provide automatic DNS resolution by container name, even if IPs change.
      2. Step 2: Evaluate options for reliable name-based connection

        Create a user-defined network and run both containers attached to it; use the database container's name in the web server config. uses user-defined network and container names, which is the recommended way for service discovery.
      3. Step 3: Why other options fail

        Default bridge network lacks automatic DNS; hardcoding IPs breaks if IP changes; --link is deprecated; static IPs are complex and error-prone.
      4. Final Answer:

        Create a user-defined network and run both containers attached to it; use the database container's name in the web server config. -> Option C
      5. Quick Check:

        User-defined network + container names = reliable service discovery [OK]
      Hint: Use user-defined network and container names for stable service discovery [OK]
      Common Mistakes:
      • Hardcoding IP addresses instead of using container names
      • Using default bridge network without DNS support
      • Relying on deprecated --link option
      • Manually assigning static IPs unnecessarily
      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