Bird
Raised Fist0
Dockerdevops~5 mins

Creating and managing volumes in Docker - Step-by-Step CLI Walkthrough

Choose your learning style10 modes available
Introduction
When you run containers, their data disappears when they stop. Volumes let you save data outside containers so it stays safe and can be shared.
When you want to keep database files safe even if the container is removed
When you need to share files between multiple containers running on the same host
When you want to back up important data created by a container
When you want to separate your app code from its data for easier updates
When you want to persist logs generated by containers for later analysis
Commands
This command creates a new volume named 'my-data-volume' to store data outside containers.
Terminal
docker volume create my-data-volume
Expected OutputExpected
my-data-volume
Runs an nginx container named 'my-container' and attaches the 'my-data-volume' to the container's /app/data folder to save data persistently.
Terminal
docker run -d --name my-container -v my-data-volume:/app/data nginx
Expected OutputExpected
a1b2c3d4e5f67890123456789abcdef0123456789abcdef0123456789abcdef0
→
-d - Run container in background (detached mode)
→
--name - Assign a name to the container for easy reference
→
-v - Attach a volume to a container path
Lists all volumes on the Docker host to verify 'my-data-volume' exists.
Terminal
docker volume ls
Expected OutputExpected
DRIVER VOLUME NAME local my-data-volume
Shows detailed information about the 'my-data-volume' including its mount point on the host.
Terminal
docker volume inspect my-data-volume
Expected OutputExpected
[ { "CreatedAt": "2024-06-01T12:00:00Z", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/my-data-volume/_data", "Name": "my-data-volume", "Options": {}, "Scope": "local" } ]
Deletes the 'my-data-volume' when it is no longer needed to free up space.
Terminal
docker volume rm my-data-volume
Expected OutputExpected
my-data-volume
Key Concept

If you remember nothing else from this pattern, remember: volumes keep your container data safe and separate from the container lifecycle.

Common Mistakes
Not creating a volume before using it in a container
Docker will create an anonymous volume but it is hard to manage and reuse later.
Always create named volumes explicitly with 'docker volume create' before attaching them.
Removing a volume while a container is still using it
Docker will refuse to remove the volume or data loss may occur if forced.
Stop and remove containers using the volume before deleting the volume.
Mounting volumes to wrong container paths
Data will not be saved where expected and the app may fail to find its files.
Check container documentation for correct paths to mount volumes.
Summary
Create a named volume with 'docker volume create' to store data persistently.
Run containers with '-v volume_name:/container/path' to attach volumes.
Use 'docker volume ls' and 'docker volume inspect' to manage and check volumes.
Remove volumes with 'docker volume rm' only after containers using them are stopped.

Practice

(1/5)
1. What is the main purpose of Docker volumes?
easy
A. To manage network connections between containers
B. To speed up container startup time
C. To create new containers automatically
D. To store data outside of containers so it is not lost when containers stop

Solution

  1. Step 1: Understand what volumes do

    Volumes store data outside the container's writable layer, so data persists even if the container is removed.
  2. Step 2: Compare options

    Only To store data outside of containers so it is not lost when containers stop describes this purpose correctly. Other options describe unrelated features.
  3. Final Answer:

    To store data outside of containers so it is not lost when containers stop -> Option D
  4. Quick Check:

    Volumes keep data safe outside containers = A [OK]
Hint: Volumes keep data safe outside containers [OK]
Common Mistakes:
  • Confusing volumes with container networking
  • Thinking volumes speed up container start
  • Assuming volumes create containers
2. Which command correctly creates a Docker volume named mydata?
easy
A. docker volume new mydata
B. docker volume create mydata
C. docker create volume mydata
D. docker volume add mydata

Solution

  1. Step 1: Recall Docker volume creation syntax

    The correct command to create a volume is docker volume create [name].
  2. Step 2: Match options to syntax

    Only docker volume create mydata matches the correct syntax exactly.
  3. Final Answer:

    docker volume create mydata -> Option B
  4. Quick Check:

    Use 'docker volume create' = C [OK]
Hint: Use 'docker volume create' to make volumes [OK]
Common Mistakes:
  • Using wrong command order like 'docker create volume'
  • Using non-existent commands like 'docker volume new'
  • Confusing 'add' with 'create'
3. What is the output of the command docker volume ls after creating two volumes named vol1 and vol2?
medium
A. Lists volumes including vol1 and vol2
B. Lists all containers running
C. Shows detailed info about vol1 only
D. Deletes volumes vol1 and vol2

Solution

  1. Step 1: Understand what 'docker volume ls' does

    This command lists all Docker volumes available on the system.
  2. Step 2: Interpret the scenario

    After creating volumes vol1 and vol2, the command will list both volumes among others.
  3. Final Answer:

    Lists volumes including vol1 and vol2 -> Option A
  4. Quick Check:

    'docker volume ls' lists volumes = A [OK]
Hint: 'docker volume ls' shows all volumes [OK]
Common Mistakes:
  • Confusing volume list with container list
  • Expecting detailed info instead of list
  • Thinking it deletes volumes
4. You run docker volume rm myvolume but get an error saying the volume is in use. What should you do to fix this?
medium
A. Restart Docker daemon and try removing again
B. Rename the volume before removing it
C. Stop and remove containers using the volume, then remove the volume
D. Use docker volume create again to overwrite it

Solution

  1. Step 1: Understand volume usage error

    Docker prevents removing volumes that are still attached to running or stopped containers.
  2. Step 2: Fix by stopping/removing containers

    You must stop and remove containers using the volume before deleting the volume itself.
  3. Final Answer:

    Stop and remove containers using the volume, then remove the volume -> Option C
  4. Quick Check:

    Remove containers before volumes in use = D [OK]
Hint: Remove containers using volume before deleting volume [OK]
Common Mistakes:
  • Trying to rename volume to delete it
  • Recreating volume instead of removing
  • Restarting Docker daemon without stopping containers
5. You want to create a Docker container that uses a volume named appdata to persist data at /data inside the container. Which command correctly does this?
hard
A. docker run --mount source=appdata,target=/data myimage
B. docker run -v /appdata:/data myimage
C. docker run -v /data appdata myimage
D. docker run --volume /data:appdata myimage

Solution

  1. Step 1: Understand volume mounting syntax

    The recommended syntax for mounting a named volume is docker run --mount source=volume_name,target=container_path image. The shorthand -v volume_name:container_path also works, but paths starting with / indicate bind mounts from the host.
  2. Step 2: Compare options

    docker run -v /appdata:/data myimage performs a bind mount from the host directory /appdata, not the named volume appdata. docker run --mount source=appdata,target=/data myimage correctly mounts the named volume appdata. The other options (-v /data appdata and --volume /data:appdata) have invalid syntax or incorrect source/target order.
  3. Final Answer:

    docker run --mount source=appdata,target=/data myimage -> Option A
  4. Quick Check:

    Use --mount source=appdata,target=/data = B [OK]
Hint: Use --mount source=vol,target=path for clarity [OK]
Common Mistakes:
  • Mixing volume and container paths order
  • Using incorrect flags like --volume with wrong syntax
  • Confusing shorthand and long form options
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