Bird
Raised Fist0
Dockerdevops~10 mins

Volumes for persistent data in Docker - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Volumes for persistent data
Create Volume
↓
Start Container with Volume
↓
Write Data inside Container
↓
Stop Container
↓
Start New Container with Same Volume
↓
Read Data from Volume
↓
Data Persists Across Containers
This flow shows how Docker volumes are created and used to keep data safe even when containers stop or are removed.
Execution Sample
Docker
docker volume create mydata

docker run -d --name app1 -v mydata:/data busybox sh -c "echo hello > /data/greeting.txt && sleep 3600"

docker run --rm -v mydata:/data busybox cat /data/greeting.txt
Create a volume, run a container that writes data to it, then run another container to read the data back.
Process Table
StepCommandActionResultData State
1docker volume create mydataCreate volume named 'mydata'Volume 'mydata' createdEmpty volume created
2docker run -d --name app1 -v mydata:/data busybox sh -c "echo hello > /data/greeting.txt && sleep 3600"Start container 'app1' with volume 'mydata' mounted at /data; write 'hello' to greeting.txtContainer 'app1' running; file writtenVolume 'mydata' contains greeting.txt with 'hello'
3docker stop app1Stop container 'app1'Container 'app1' stoppedData in volume unchanged
4docker run --rm -v mydata:/data busybox cat /data/greeting.txtRun temporary container mounting 'mydata' to read greeting.txtOutput: helloData read successfully from volume
5docker volume rm mydataAttempt to remove volume 'mydata'Error: volume is in use or does not existVolume still exists because in use or not removed
6docker rm app1Remove container 'app1'Container 'app1' removedVolume still exists with data
7docker volume rm mydataRemove volume 'mydata'Volume 'mydata' removedVolume deleted, data lost
💡 Volume removed or container stopped; data persists until volume is deleted
Status Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 6Final
Volume 'mydata'NoneCreated (empty)Contains greeting.txt with 'hello'Data unchangedData unchangedData unchangedDeleted
Container 'app1'NoneNoneRunningStoppedStoppedRemovedNone
Key Moments - 3 Insights
Why does the data still exist after stopping the container?
Because the data is stored in the Docker volume 'mydata', which is independent of the container's lifecycle, as shown in execution_table step 3 and 4.
What happens if you remove the container but not the volume?
The volume and its data remain intact, so you can attach it to another container later. This is shown in execution_table step 6 where the container is removed but the volume still holds data.
Why can't you remove a volume if it is still in use by a container?
Docker prevents removing volumes that are in use to avoid data loss, as seen in execution_table step 5 where removal fails because the container is still using the volume.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the content of the volume 'mydata' after step 2?
AContains greeting.txt with 'hello'
BVolume deleted
CEmpty volume
DContains no files
💡 Hint
Check the 'Data State' column at step 2 in the execution_table.
At which step is the container 'app1' removed?
AStep 4
BStep 6
CStep 3
DStep 7
💡 Hint
Look at the 'Command' and 'Result' columns for container removal in execution_table.
If you remove the volume before removing the container, what will happen?
AVolume is removed successfully
BContainer stops automatically
CError because volume is in use
DData is copied to container
💡 Hint
Refer to step 5 in execution_table where volume removal fails due to usage.
Concept Snapshot
Docker volumes store data outside containers.
Create with 'docker volume create'.
Mount with '-v volume_name:/path'.
Data persists after container stops.
Remove volume to delete data.
Volumes prevent data loss across container restarts.
Full Transcript
This lesson shows how Docker volumes help keep data safe even when containers stop or are removed. First, you create a volume with 'docker volume create'. Then you start a container and mount the volume inside it. The container writes data to the volume. When the container stops or is removed, the data remains in the volume. You can start another container and mount the same volume to read the data. The volume only disappears when you explicitly remove it. This way, volumes help keep your data persistent and safe across container lifecycles.

Practice

(1/5)
1. What is the main purpose of using volumes in Docker containers?
easy
A. To limit container CPU usage
B. To store data persistently outside the container lifecycle
C. To speed up container startup time
D. To create network connections between containers

Solution

  1. Step 1: Understand container storage

    Containers are temporary and lose data when removed unless data is stored outside.
  2. Step 2: Role of volumes

    Volumes provide a way to save data persistently on the host, independent of container lifecycle.
  3. Final Answer:

    To store data persistently outside the container lifecycle -> Option B
  4. Quick Check:

    Persistent data = volumes [OK]
Hint: Volumes keep data safe even if container is deleted [OK]
Common Mistakes:
  • Confusing volumes with container CPU limits
  • Thinking volumes speed up container start
  • Mixing volumes with networking features
2. Which of the following is the correct Docker CLI syntax to create a named volume called mydata?
easy
A. docker create volume mydata
B. docker volume new mydata
C. docker volume create mydata
D. docker volume make mydata

Solution

  1. Step 1: Recall Docker volume creation command

    The correct command to create a volume is docker volume create <name>.
  2. Step 2: Match syntax

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

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

    Volume create command = docker volume create [OK]
Hint: Use 'docker volume create' to make volumes [OK]
Common Mistakes:
  • Using 'create volume' instead of 'volume create'
  • Using 'new' or 'make' which are invalid commands
  • Mixing order of words in the command
3. Given the Docker run command:
docker run -d -v myvol:/app/data nginx
What happens to the data inside /app/data when the container is removed?
medium
A. Data remains in the named volume myvol
B. Data is deleted with the container
C. Data is copied to the host's home directory
D. Data is lost unless backed up manually

Solution

  1. Step 1: Understand named volume behavior

    Named volumes like myvol store data persistently on the host.
  2. Step 2: Effect of container removal

    Removing the container does not delete the named volume or its data.
  3. Final Answer:

    Data remains in the named volume myvol -> Option A
  4. Quick Check:

    Named volume data persists after container removal [OK]
Hint: Named volumes keep data safe after container removal [OK]
Common Mistakes:
  • Assuming data deletes with container
  • Confusing named volumes with anonymous volumes
  • Thinking data copies to host home directory automatically
4. You run this command:
docker run -v /data nginx
But it fails with an error. What is the problem?
medium
A. Missing container path in volume syntax
B. Volume name /data is invalid
C. Nginx image does not support volumes
D. Docker daemon is not running

Solution

  1. Step 1: Check volume syntax

    The correct volume syntax requires host_path:container_path or volume_name:container_path.
  2. Step 2: Identify missing part

    Here, only one path /data is given, missing container path.
  3. Final Answer:

    Missing container path in volume syntax -> Option A
  4. Quick Check:

    Volume syntax needs host:container paths [OK]
Hint: Volume syntax needs two paths separated by colon [OK]
Common Mistakes:
  • Using only one path in -v option
  • Blaming image for volume errors
  • Ignoring Docker daemon status
5. You want to share persistent data between two containers using a named volume sharedvol. Which Docker commands correctly achieve this?
hard
A. docker volume create sharedvol
docker run -v sharedvol container1
docker run -v sharedvol container2
B. docker run -v sharedvol:/data container1
docker run -v sharedvol:/data container2
C. docker volume create sharedvol
docker run -v /data sharedvol container1
docker run -v /data sharedvol container2
D. docker volume create sharedvol
docker run -v sharedvol:/data container1
docker run -v sharedvol:/data container2

Solution

  1. Step 1: Create the named volume

    Use docker volume create sharedvol to make the volume first.
  2. Step 2: Mount volume in both containers

    Use -v sharedvol:/data to mount the volume at /data inside each container.
  3. Final Answer:

    docker volume create sharedvol
    docker run -v sharedvol:/data container1
    docker run -v sharedvol:/data container2
    -> Option D
  4. Quick Check:

    Named volume + mount path in both containers = sharing data [OK]
Hint: Create volume first, then mount with -v volume:path [OK]
Common Mistakes:
  • Skipping volume creation step
  • Reversing volume and path in -v option
  • Omitting container path in volume mount
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