Bird
Raised Fist0
Dockerdevops~20 mins

Volume vs bind mount decision in Docker - Practice Questions

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Volume vs Bind Mount Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Choosing between Docker volume and bind mount for persistent data

You want to store database data persistently in Docker. Which option best explains when to use a Docker volume instead of a bind mount?

AUse a Docker volume when you want Docker to manage the data storage location and ensure portability across different hosts.
BUse a Docker volume only if you want to directly edit files on the host machine from inside the container.
CUse a bind mount when you want Docker to manage the data storage and isolate it from the host filesystem.
DUse a bind mount when you want Docker to automatically backup the data to the cloud.
Attempts:
2 left
💡 Hint

Think about who controls the data location and portability.

💻 Command Output
intermediate
1:30remaining
Output of Docker volume inspect command

What is the output type of the command docker volume inspect my_volume?

Docker
docker volume inspect my_volume
AAn error message saying the volume does not exist, even if it does.
BA JSON array with detailed information about the volume, including mountpoint and driver.
CA plain text list of files inside the volume.
DA simple string showing only the volume name.
Attempts:
2 left
💡 Hint

Think about what 'inspect' commands usually return in Docker.

🔀 Workflow
advanced
2:30remaining
Correct order to create and use a Docker volume in a container

Arrange the steps in the correct order to create a Docker volume and use it in a container.

A1,3,2,4
B3,1,2,4
C1,2,3,4
D3,2,1,4
Attempts:
2 left
💡 Hint

Think about listing volumes before and after creation, and when to remove.

❓ Troubleshoot
advanced
2:00remaining
Troubleshooting permission issues with bind mounts

You mounted a host directory into a container using a bind mount, but the container process cannot write to the directory. What is the most likely cause?

ADocker volumes never have permission issues, so the problem is with the container image.
BThe container must be restarted twice to apply bind mount permissions.
CBind mounts automatically change permissions to allow container writes.
DThe host directory permissions do not allow the container user to write to it.
Attempts:
2 left
💡 Hint

Consider how host filesystem permissions affect bind mounts.

✅ Best Practice
expert
3:00remaining
Best practice for sharing configuration files between host and container

You want to share configuration files between your host and a Docker container, allowing live edits on the host to reflect immediately inside the container. Which is the best approach?

ABake the configuration files into the container image and rebuild the image on every change.
BUse a Docker volume to store the configuration files and copy them manually when changed.
CUse a bind mount to link the host configuration directory to the container path.
DUse a Docker secret to store configuration files for live editing.
Attempts:
2 left
💡 Hint

Think about live updates and direct file access.

Practice

(1/5)
1. Which Docker storage option should you use if you want Docker to manage persistent data independently of the host system?
easy
A. Use a temporary container filesystem
B. Use a bind mount
C. Use a network file share
D. Use a Docker volume

Solution

  1. Step 1: Understand Docker volume purpose

    Docker volumes are designed to store persistent data managed by Docker itself, independent of the host's file system structure.
  2. Step 2: Compare with bind mounts

    Bind mounts link host files or folders directly, so Docker does not manage the data lifecycle.
  3. Final Answer:

    Use a Docker volume -> Option D
  4. Quick Check:

    Docker manages data = Use volume [OK]
Hint: Docker manages data? Choose volume. Host controls? Choose bind mount. [OK]
Common Mistakes:
  • Confusing bind mounts as Docker-managed storage
  • Using temporary container filesystem for persistent data
  • Assuming network file share is a Docker volume
2. Which of the following is the correct syntax to create a Docker container with a bind mount from host folder /home/user/data to container folder /app/data?
easy
A. docker run -v /home/user/data:/app/data myimage
B. docker run --mount type=bind,source=/app/data,target=/home/user/data myimage
C. docker run --bind /home/user/data:/app/data myimage
D. docker run -v /app/data:/home/user/data myimage

Solution

  1. Step 1: Recall bind mount syntax with -v

    The correct syntax for bind mounts with -v is -v host_path:container_path. So -v /home/user/data:/app/data is correct.
  2. Step 2: Check other options for errors

    docker run --mount type=bind,source=/app/data,target=/home/user/data myimage reverses source and target paths and uses --mount incorrectly. docker run --bind /home/user/data:/app/data myimage uses invalid flag --bind. docker run -v /app/data:/home/user/data myimage reverses host and container paths.
  3. Final Answer:

    docker run -v /home/user/data:/app/data myimage -> Option A
  4. Quick Check:

    Bind mount syntax = -v host:container [OK]
Hint: Bind mount syntax: -v host_path:container_path [OK]
Common Mistakes:
  • Reversing host and container paths
  • Using invalid flags like --bind
  • Confusing --mount syntax parameters
3. Given the command docker run -v mydata:/data busybox ls /data, what will be the output if mydata volume is empty?
medium
A. Lists files from host /data directory
B. Shows an empty list (no files)
C. Throws an error: volume not found
D. Lists files from busybox image /data directory

Solution

  1. Step 1: Understand volume behavior

    The volume mydata is mounted at /data inside the container. If the volume is empty, the container sees an empty directory at /data.
  2. Step 2: Check command output

    The ls /data command lists files in the mounted volume. Since it is empty, the output is empty (no files listed).
  3. Final Answer:

    Shows an empty list (no files) -> Option B
  4. Quick Check:

    Empty volume = empty directory inside container [OK]
Hint: Empty volume means empty folder inside container [OK]
Common Mistakes:
  • Assuming volume auto-fills with image files
  • Expecting error if volume is empty
  • Confusing volume with bind mount behavior
4. You want to edit source code files live on your host and see changes immediately inside the container. You tried docker run -v /app/src busybox but it fails. What is the error and how to fix it?
medium
A. Error: permission denied; fix by running as root
B. Error: volume not found; fix by creating volume first
C. Error: missing container path; fix by adding host:container in -v
D. Error: invalid image; fix by using correct image name

Solution

  1. Step 1: Identify syntax error in -v flag

    The command -v /app/src is incomplete. Docker expects -v host_path:container_path or volume_name:container_path.
  2. Step 2: Fix by specifying both paths

    To bind mount host folder /app/src into container, use -v /app/src:/app/src or similar.
  3. Final Answer:

    Error: missing container path; fix by adding host:container in -v -> Option C
  4. Quick Check:

    -v requires host:container paths [OK]
Hint: -v must have host and container paths separated by colon [OK]
Common Mistakes:
  • Using only one path in -v flag
  • Confusing volume creation with bind mount syntax
  • Ignoring error messages about syntax
5. You want to share a configuration file /etc/config.yaml from your host with multiple containers, and you want Docker to manage the data lifecycle. Which approach is best?
hard
A. Create a Docker volume, copy the file into it, then mount the volume in containers
B. Use a bind mount directly from /etc/config.yaml to containers
C. Copy the file into each container image manually
D. Use a network file share mounted inside containers

Solution

  1. Step 1: Understand requirement for Docker-managed data

    You want Docker to manage the data lifecycle, so bind mounts (host-managed) are not ideal.
  2. Step 2: Use volume and copy file

    Create a Docker volume, copy /etc/config.yaml into it once, then mount this volume into all containers. This centralizes management.
  3. Final Answer:

    Create a Docker volume, copy the file into it, then mount the volume in containers -> Option A
  4. Quick Check:

    Docker manages data = use volume + copy file [OK]
Hint: For Docker-managed shared data, use volume with copied files [OK]
Common Mistakes:
  • Using bind mounts when Docker management is needed
  • Copying files into images instead of using volumes
  • Assuming network shares are Docker volumes
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