Bird
Raised Fist0
Dockerdevops~10 mins

Volume vs bind mount decision in Docker - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a Docker volume named 'data_vol'.

Docker
docker volume [1] data_vol
Drag options to blanks, or click blank then click option'
Arun
Bbuild
Ccreate
Dstart
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'docker volume run' instead of 'create'.
2fill in blank
medium

Complete the code to run a container with a bind mount from host directory '/host/data' to container '/app/data'.

Docker
docker run -v [1]:/app/data myimage
Drag options to blanks, or click blank then click option'
A/host/data
B/data
C/app/data
D/container/data
Attempts:
3 left
💡 Hint
Common Mistakes
Using container path as source instead of host path.
3fill in blank
hard

Fix the error in the command to mount a volume named 'myvol' to '/data' in the container.

Docker
docker run -v [1]:/data myimage
Drag options to blanks, or click blank then click option'
Amyvol_data
Bmyvol:/data
Cvolume:myvol
Dmyvol
Attempts:
3 left
💡 Hint
Common Mistakes
Adding extra text like ':myvol' or including the container path twice.
4fill in blank
hard

Fill all three blanks to create a bind mount from host directory '/var/log' to container directory '/logs' with read-only access.

Docker
docker run -v [1]:[2]:[3] myimage
Drag options to blanks, or click blank then click option'
A/var/log
B/logs
Cro
Drw
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'rw' instead of 'ro' for read-only mounts.
5fill in blank
hard

Fill all three blanks to create a volume mount with a named volume 'cache_vol', mounted to '/cache' in the container with read-write access.

Docker
docker run -v [1]:[2]:[3] myimage
Drag options to blanks, or click blank then click option'
Acache_vol
B/cache
Crw
Dro
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'ro' instead of 'rw' for read-write mounts.

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