Bird
Raised Fist0
Dockerdevops~20 mins

Read-only filesystem containers in Docker - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Read-Only Container Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Output of running a read-only container with write attempt
What is the output when you run this Docker command that tries to write a file inside a read-only container?
Docker
docker run --rm --read-only alpine sh -c "echo 'test' > /tmp/testfile"
Atestfile created successfully
Bsh: can't create /tmp/testfile: Read-only file system
CPermission denied
DNo such file or directory
Attempts:
2 left
💡 Hint
Think about what happens when you try to write to a read-only filesystem.
🧠 Conceptual
intermediate
1:30remaining
Purpose of read-only filesystem in containers
Why would you want to run a container with a read-only filesystem?
ATo allow unlimited writes without disk space limits
BTo increase container startup speed
CTo enable container networking features
DTo improve security by preventing writes inside the container
Attempts:
2 left
💡 Hint
Think about how restricting writes can protect the container.
❓ Configuration
advanced
2:30remaining
Correct Docker run command for read-only container with writable volume
Which Docker command correctly runs a container with a read-only root filesystem but allows writing to /data directory?
Adocker run --rm --read-only -v /host/data:/data:rw alpine
Bdocker run --rm -v /host/data:/data:ro alpine
Cdocker run --rm --read-only -v /host/data:/data:ro alpine
Ddocker run --rm --read-only alpine
Attempts:
2 left
💡 Hint
Remember that the root filesystem is read-only but volumes can be mounted writable.
❓ Troubleshoot
advanced
2:00remaining
Troubleshooting write failure in read-only container with volume
You run a container with --read-only and a volume mounted as writable, but writing to the volume still fails. What is the most likely cause?
AThe --read-only flag disables all writes including volumes
BThe container image does not support volumes
CThe volume is mounted with read-only permissions on the host
DDocker daemon is not running
Attempts:
2 left
💡 Hint
Check the host directory permissions for the volume mount.
✅ Best Practice
expert
3:00remaining
Best practice for logging in read-only containers
What is the best practice to handle application logs when running a container with a read-only filesystem?
AMount a writable volume or tmpfs at the log directory path
BWrite logs inside the container root filesystem
CDisable logging to avoid write errors
DSend logs only to stdout without any volume mounts
Attempts:
2 left
💡 Hint
Think about how to allow writes for logs without changing the root filesystem.

Practice

(1/5)
1. What does the --read-only flag do when starting a Docker container?
easy
A. Runs the container with root privileges.
B. Deletes all files inside the container before starting it.
C. Makes the container's filesystem read-only, preventing any changes inside it.
D. Allows the container to write to the host filesystem.

Solution

  1. Step 1: Understand the --read-only flag purpose

    The --read-only flag makes the container's filesystem read-only, so no files can be changed or created inside the container.
  2. Step 2: Compare other options

    Running with root privileges, deleting files, or allowing writes to the host filesystem are unrelated or incorrect behaviors for this flag.
  3. Final Answer:

    Makes the container's filesystem read-only, preventing any changes inside it. -> Option C
  4. Quick Check:

    --read-only = read-only filesystem [OK]
Hint: Remember: --read-only locks container files from changes [OK]
Common Mistakes:
  • Thinking it deletes files instead of locking them
  • Confusing with volume mounts
  • Assuming it grants root access
2. Which of the following is the correct Docker command to start a container with a read-only filesystem?
easy
A. docker run --read-only alpine
B. docker run --readonly alpine
C. docker run -ro alpine
D. docker run --readwrite alpine

Solution

  1. Step 1: Check the correct flag syntax

    The correct flag to make the filesystem read-only is --read-only with a hyphen.
  2. Step 2: Validate options

    docker run --read-only alpine uses the correct flag --read-only. The short flag -ro doesn't exist, --readonly lacks the hyphen, and --readwrite is the opposite meaning.
  3. Final Answer:

    docker run --read-only alpine -> Option A
  4. Quick Check:

    Correct flag is --read-only [OK]
Hint: Use double dash and hyphen: --read-only [OK]
Common Mistakes:
  • Using --readonly without hyphen
  • Using short flags like -ro which don't exist
  • Confusing with --readwrite
3. Consider this command:
docker run --read-only -v /data alpine sh -c "echo hello > /data/file.txt && cat /data/file.txt"
What will be the output?
medium
A. hello
B. Permission denied error
C. No such file or directory error
D. Empty output

Solution

  1. Step 1: Understand --read-only with volume mount

    The container filesystem is read-only, but the /data directory is mounted as a volume, which is writable.
  2. Step 2: Analyze the command behavior

    The command writes "hello" to /data/file.txt and then reads it back. Since /data is writable, this succeeds and outputs "hello".
  3. Final Answer:

    hello -> Option A
  4. Quick Check:

    Writable volume inside read-only container = writable [OK]
Hint: Writable volumes override read-only container filesystem [OK]
Common Mistakes:
  • Assuming entire container is fully read-only including volumes
  • Expecting permission denied on volume writes
  • Confusing volume mount syntax
4. You run this command:
docker run --read-only alpine sh -c "touch /tmp/testfile"
But it fails with a permission error. What is the best fix?
medium
A. Remove the --read-only flag
B. Add a writable tmpfs mount for /tmp using --tmpfs /tmp
C. Run the container as root user
D. Use -v /tmp:/tmp to mount host /tmp

Solution

  1. Step 1: Identify cause of permission error

    The container filesystem is read-only, so creating files in /tmp fails.
  2. Step 2: Provide writable space with tmpfs

    Using --tmpfs /tmp mounts a writable temporary filesystem at /tmp, allowing file creation despite read-only root.
  3. Final Answer:

    Add a writable tmpfs mount for /tmp using --tmpfs /tmp -> Option B
  4. Quick Check:

    Writable tmpfs fixes write errors in read-only containers [OK]
Hint: Use --tmpfs to add writable temp folders in read-only containers [OK]
Common Mistakes:
  • Removing --read-only loses security benefits
  • Mounting host /tmp may cause permission issues
  • Assuming root user can write despite read-only filesystem
5. You want to run a container with a read-only filesystem but allow writing only to /app/logs. Which command correctly achieves this?
hard
A. docker run --read-only alpine
B. docker run --read-only --tmpfs /app/logs alpine
C. docker run -v /host/logs:/app/logs alpine
D. docker run --read-only -v /host/logs:/app/logs alpine

Solution

  1. Step 1: Understand read-only with writable folder

    The container filesystem is read-only, but mounting a host directory as a volume at /app/logs makes that folder writable.
  2. Step 2: Evaluate options

    docker run --read-only -v /host/logs:/app/logs alpine uses --read-only plus a volume mount for writable logs. docker run --read-only --tmpfs /app/logs alpine uses tmpfs which is temporary and not persistent. docker run -v /host/logs:/app/logs alpine lacks --read-only. docker run --read-only alpine has no writable folder.
  3. Final Answer:

    docker run --read-only -v /host/logs:/app/logs alpine -> Option D
  4. Quick Check:

    Volume mount + --read-only = writable folder [OK]
Hint: Use volume mount with --read-only for writable folders [OK]
Common Mistakes:
  • Using tmpfs when persistence is needed
  • Forgetting --read-only flag
  • Expecting writable without volume or tmpfs
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