Bird
Raised Fist0
Dockerdevops~20 mins

Mounting read-only volumes in Docker - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Read-Only Volume Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the effect of this Docker run command?
Consider the command below that runs a Docker container with a volume mounted as read-only. What will be the output when the container tries to write to the mounted directory?
Docker
docker run --rm -v /host/data:/container/data:ro alpine sh -c "echo 'test' > /container/data/file.txt"
AThe command fails with a 'Read-only file system' error.
BThe command succeeds and writes 'test' to /container/data/file.txt inside the container.
CThe container ignores the read-only flag and writes the file successfully.
DThe container crashes immediately without any error message.
Attempts:
2 left
💡 Hint
Think about what the ':ro' flag means when mounting volumes in Docker.
🧠 Conceptual
intermediate
1:30remaining
Why use read-only volume mounts in Docker?
Which of the following is the best reason to mount a volume as read-only in a Docker container?
ATo increase the container's CPU usage.
BTo allow the container to write logs to the host system.
CTo enable the container to update configuration files on the host.
DTo prevent the container from modifying host files and improve security.
Attempts:
2 left
💡 Hint
Think about protecting host data from accidental or malicious changes.
❓ Configuration
advanced
2:00remaining
Identify the correct Docker Compose volume mount for read-only access
Given this Docker Compose service snippet, which option correctly mounts the host directory '/app/config' as read-only inside the container at '/config'?
Docker
services:
  app:
    image: myapp:latest
    volumes:
A- /app/config:/config:ro
B- /app/config:/config:rw
C- /app/config:/config
D- /app/config:/config:read-only
Attempts:
2 left
💡 Hint
Docker Compose uses the same volume mount syntax as Docker CLI for read-only flag.
❓ Troubleshoot
advanced
2:30remaining
Why does this container fail to write to a mounted volume despite no ':ro' flag?
A developer runs this command: docker run --rm -v /host/data:/data alpine sh -c "echo 'hello' > /data/file.txt" But the command fails with 'Read-only file system'. What is the most likely cause?
AThe container image 'alpine' does not support writing to volumes.
BThe host directory '/host/data' is mounted as read-only by the host OS permissions.
CThe volume mount syntax is incorrect and defaults to read-only.
DThe Docker daemon is running in read-only mode.
Attempts:
2 left
💡 Hint
Check the permissions of the host directory being mounted.
🔀 Workflow
expert
3:00remaining
Order the steps to safely mount a read-only volume in Docker for a production app
Arrange the following steps in the correct order to mount a read-only volume for a Docker container running a production app.
A4,2,1,3
B1,4,2,3
C4,1,2,3
D2,4,1,3
Attempts:
2 left
💡 Hint
Think about preparing data and permissions before running the container.

Practice

(1/5)
1. What does adding :ro at the end of a Docker volume mount do?
easy
A. Mounts the volume with root user permissions
B. Mounts the volume as read-write, allowing container writes
C. Removes the volume after container stops
D. Mounts the volume as read-only, preventing container writes

Solution

  1. Step 1: Understand Docker volume mount options

    Docker allows mounting volumes with options like :ro or :rw to control access.
  2. Step 2: Identify the effect of :ro

    The :ro option makes the mounted volume read-only inside the container, so the container cannot modify the data.
  3. Final Answer:

    Mounts the volume as read-only, preventing container writes -> Option D
  4. Quick Check:

    :ro means read-only mount [OK]
Hint: Remember 'ro' means read-only, no writes allowed [OK]
Common Mistakes:
  • Confusing :ro with :rw
  • Thinking :ro deletes volume after use
  • Assuming :ro changes user permissions
2. Which of the following is the correct syntax to mount a host directory /data as a read-only volume inside a container at /app/data?
easy
A. docker run -v /data:/app/data:rw myimage
B. docker run -v /data:/app/data:read-only myimage
C. docker run -v /data:/app/data:ro myimage
D. docker run -v /data:/app/data:readonly myimage

Solution

  1. Step 1: Recall Docker volume mount syntax

    The syntax is -v host_path:container_path:options, where options can be ro or rw.
  2. Step 2: Identify correct read-only option

    The correct option for read-only is ro. Options like read-only or readonly are invalid.
  3. Final Answer:

    docker run -v /data:/app/data:ro myimage -> Option C
  4. Quick Check:

    Use :ro for read-only mount [OK]
Hint: Use ':ro' exactly for read-only volume mounts [OK]
Common Mistakes:
  • Using ':rw' instead of ':ro' for read-only
  • Writing 'readonly' or 'read-only' instead of 'ro'
  • Omitting the option entirely
3. Given the command:
docker run -v /host/config:/app/config:ro myapp

What will happen if the container tries to write a file inside /app/config?
medium
A. The write will fail with a permission error
B. The container will crash immediately
C. The write will succeed and file will be saved
D. Docker will remount the volume as read-write automatically

Solution

  1. Step 1: Understand the effect of :ro mount

    The volume is mounted read-only, so the container cannot modify files in /app/config.
  2. Step 2: Predict container behavior on write attempt

    When the container tries to write, the OS denies permission, causing a write failure with an error.
  3. Final Answer:

    The write will fail with a permission error -> Option A
  4. Quick Check:

    Read-only mount blocks writes with permission error [OK]
Hint: Read-only volumes block writes, causing permission errors [OK]
Common Mistakes:
  • Assuming writes succeed on read-only mounts
  • Thinking Docker remounts volumes automatically
  • Believing container crashes on write failure
4. You run this command:
docker run -v /data:/app/data myimage

You want to make the volume read-only but accidentally write :ro as :or. What will happen?
medium
A. Docker will mount the volume as read-only anyway
B. Docker will throw an error and refuse to start the container
C. The volume will be mounted as read-write
D. The container will start but fail when writing to the volume

Solution

  1. Step 1: Check the mount option syntax

    The option :ro is valid for read-only. :or is invalid and not recognized by Docker.
  2. Step 2: Understand Docker's response to invalid options

    Docker will detect the invalid option and refuse to start the container, showing an error.
  3. Final Answer:

    Docker will throw an error and refuse to start the container -> Option B
  4. Quick Check:

    Invalid mount options cause Docker errors [OK]
Hint: Check option spelling carefully; invalid options cause errors [OK]
Common Mistakes:
  • Assuming Docker ignores invalid mount options
  • Thinking volume mounts as read-only despite typo
  • Believing container starts but fails later
5. You want to share a configuration directory /etc/config with multiple containers but prevent them from modifying it. Which command correctly mounts it read-only and ensures the container user cannot override this?
hard
A. docker run -v /etc/config:/config:ro myapp
B. docker run --read-only -v /etc/config:/config myapp
C. docker run -v /etc/config:/config:rw --user 1000 myapp
D. docker run -v /etc/config:/config:rw myapp

Solution

  1. Step 1: Understand read-only volume mount

    Mounting with :ro makes the volume read-only inside the container, preventing writes regardless of user.
  2. Step 2: Evaluate other options

    docker run --read-only -v /etc/config:/config myapp makes the entire container filesystem read-only, which is overly restrictive. docker run -v /etc/config:/config:rw --user 1000 myapp adds user but does not prevent writes since volume is read-write. docker run -v /etc/config:/config:rw myapp mounts read-write, allowing changes.
  3. Final Answer:

    docker run -v /etc/config:/config:ro myapp -> Option A
  4. Quick Check:

    Use :ro to share read-only volumes safely [OK]
Hint: Use ':ro' to protect shared data from container writes [OK]
Common Mistakes:
  • Confusing container read-only flag with volume read-only
  • Mounting volume as read-write by mistake
  • Thinking user ID affects volume write permissions
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