Bird
Raised Fist0
Dockerdevops~5 mins

Running containers as non-root in Docker - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
Why should you avoid running Docker containers as root?
Running containers as root can create security risks because if the container is compromised, the attacker may gain root access to the host system. Running as non-root limits these risks.
Click to reveal answer
beginner
How do you specify a non-root user in a Dockerfile?
Use the USER instruction followed by the username or UID. For example, USER appuser switches to the user appuser inside the container.
Click to reveal answer
beginner
What command can you use to check the current user inside a running container?
Run whoami inside the container shell to see the current user name.
Click to reveal answer
intermediate
What is the purpose of the --user flag in docker run?
The --user flag lets you run the container process as a specific user or UID without changing the Dockerfile. For example, docker run --user 1001 myimage runs as user ID 1001.
Click to reveal answer
intermediate
What should you do if your application needs write access to a directory but runs as non-root?
Make sure the directory permissions allow the non-root user to write. You can set ownership or permissions on the directory during image build or at runtime.
Click to reveal answer
What is the default user inside a Docker container if not specified?
Aappuser
Bnobody
Cdocker
Droot
Which Dockerfile instruction sets the user for running commands inside the container?
AUSER
BENTRYPOINT
CCMD
DRUN
How can you run a container as a non-root user without modifying the Dockerfile?
AUse the --user flag with docker run
BChange the ENTRYPOINT
CUse docker exec
DModify the image layers
What happens if a non-root user tries to write to a directory without permission inside a container?
AThe write succeeds
BPermission denied error occurs
CThe container crashes
DDocker automatically grants permission
Why is running containers as non-root considered a best practice?
AIt uses less memory
BIt improves container startup speed
CIt reduces security risks
DIt enables automatic updates
Explain how to run a Docker container as a non-root user and why it is important.
Think about user permissions and container security.
You got /3 concepts.
    Describe what steps you would take if your containerized app needs to write files but runs as a non-root user.
    Focus on file system permissions and user identity.
    You got /3 concepts.

      Practice

      (1/5)
      1. Why is it recommended to run Docker containers as a non-root user?
      easy
      A. To enable root access inside the container
      B. To make containers run faster
      C. To improve security by limiting container permissions
      D. To allow containers to access all host files

      Solution

      1. Step 1: Understand container user privileges

        Running containers as root gives full permissions inside the container, which can be risky if the container is compromised.
      2. Step 2: Recognize security benefits of non-root users

        Using a non-root user limits what the container can do, reducing potential damage from attacks.
      3. Final Answer:

        To improve security by limiting container permissions -> Option C
      4. Quick Check:

        Security = D [OK]
      Hint: Non-root users limit permissions, improving security [OK]
      Common Mistakes:
      • Thinking non-root users make containers faster
      • Believing root is needed for all container tasks
      • Confusing root access with better security
      2. Which Dockerfile instruction sets the user to run the container as non-root?
      easy
      A. RUN
      B. CMD
      C. ENTRYPOINT
      D. USER

      Solution

      1. Step 1: Identify Dockerfile instructions for user control

        The USER instruction sets the user and group for running commands inside the container.
      2. Step 2: Differentiate from other instructions

        RUN executes commands during build, CMD and ENTRYPOINT define container start commands but do not set user.
      3. Final Answer:

        USER -> Option D
      4. Quick Check:

        Set user = USER [OK]
      Hint: USER sets container run user in Dockerfile [OK]
      Common Mistakes:
      • Using RUN to set user (it runs commands)
      • Confusing CMD or ENTRYPOINT with user setting
      • Omitting USER instruction for non-root
      3. What is the effect of running this command?
      docker run --user 1001 alpine id
      medium
      A. Shows the user ID 1001 inside the container
      B. Runs the container as root user
      C. Fails because user 1001 does not exist
      D. Shows the container's hostname

      Solution

      1. Step 1: Understand the --user flag

        The --user 1001 option runs the container process as user ID 1001 instead of root.
      2. Step 2: Analyze the command output

        The id command inside the container prints the current user info, so it will show UID=1001.
      3. Final Answer:

        Shows the user ID 1001 inside the container -> Option A
      4. Quick Check:

        --user 1001 + id = UID 1001 [OK]
      Hint: --user sets UID; id shows current user info [OK]
      Common Mistakes:
      • Assuming container runs as root despite --user
      • Thinking id shows hostname
      • Believing command fails if user not in /etc/passwd
      4. You wrote this Dockerfile snippet:
      FROM alpine
      USER appuser
      CMD ["sh"]

      But when running the container, you get a permission denied error. What is the likely cause?
      medium
      A. The CMD syntax is incorrect
      B. The user 'appuser' does not exist in the image
      C. The base image alpine does not support USER
      D. The container needs root to run sh

      Solution

      1. Step 1: Check if user exists in image

        The USER appuser requires that 'appuser' is created in the image, otherwise permission errors occur.
      2. Step 2: Verify other options

        CMD syntax is correct, alpine supports USER, and sh can run as non-root if permissions allow.
      3. Final Answer:

        The user 'appuser' does not exist in the image -> Option B
      4. Quick Check:

        User must exist = B [OK]
      Hint: Create user before USER instruction to avoid permission errors [OK]
      Common Mistakes:
      • Assuming USER works without creating user
      • Blaming CMD syntax for permission issues
      • Thinking alpine disallows USER instruction
      5. You want to run a container as a non-root user with UID 2000 and GID 3000, but the image has no such user. Which is the best way to do this securely?
      hard
      A. Add a user with UID 2000 and GID 3000 in the Dockerfile, then use USER
      B. Run the container as root and change permissions inside
      C. Use --user 2000:3000 without creating the user in the image
      D. Modify the host system to add user 2000

      Solution

      1. Step 1: Understand user creation in Dockerfile

        To run as a specific non-root user, create that user and group inside the image with matching UID and GID.
      2. Step 2: Use USER instruction to switch user

        After creating the user, use the USER instruction to run container processes as that user securely.
      3. Step 3: Evaluate other options

        Running as root is insecure, using --user without user in image may cause permission issues, and modifying host users is unrelated.
      4. Final Answer:

        Add a user with UID 2000 and GID 3000 in the Dockerfile, then use USER -> Option A
      5. Quick Check:

        Create user + USER = secure non-root run [OK]
      Hint: Create user in Dockerfile before USER for secure non-root run [OK]
      Common Mistakes:
      • Running as root to avoid user setup
      • Using --user without user in image causing errors
      • Changing host users instead of container users
      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