Docker Volume Commands
Discover Docker Volume commands: Create, inspect, and manage volumes to store persistent data and share it across containers easily.
Published Oct 2, 2024
The
docker volume
command is used to manage Docker volumes. It provides various subcommands to create, inspect, list, remove, and prune volumes. Here's an overview of the docker volume
command and its subcommands:Command:
docker volume create[VOLUME_NAME]:
Creates a new named volume with the specified name or lets Docker generate a unique name if not provided.Example:
This command creates a Docker volume named
my_volume
on your Docker host. Once created, this volume can be used to persist data generated by containers or share data between containers.Command:
docker volume inspect [VOLUME_NAME]:
Displays detailed information about one or more volumes, including metadata and options.Example:
This command inspects the volume named
my_volume
and provides detailed information about its configuration and properties. It returns a JSON-formatted output containing various details such as the volume's name, driver, mount point, labels, and other metadata.For instance, if you have previously created the
my_volume
volume using the docker volume create
command, running the above docker volume inspect
command will display information about this volume, including its name, driver, and any labels associated with it.This output provides details about the
my_volume
volume, such as its creation time, driver type (in this case, it's a local volume), mount point, and other relevant information.Command:
docker volume ls:
Lists all volumes on the Docker host, showing volume names and their respective driver and options.Example:
This command lists all Docker volumes present on your Docker host. When you run this command, youβll see a list of volumes with their respective names and drivers.
For example, if you have several volumes created on your system, the output might look something like this:
In this example, there are two volumes listed:
my_volume
and another_volume
. Both volumes are using the local volume driver (local
), which means they are stored locally on the Docker host.Command:
docker volume rm [VOLUME_NAME]:
Removes one or more volumes. Docker prevents removal of volumes that are currently in use by containers.Example:
This command removes the Docker volume named
my_volume
from your Docker host. Once executed, the volume and any associated data will be permanently deleted, so be cautious when using this command.If the volume is currently being used by a container, Docker will prevent you from removing it and display an error message indicating that the volume is still in use. You must stop and remove any containers that are using the volume before you can successfully remove it.
Command:
docker volume prune [OPTIONS]:
Removes all volumes not used by at least one container. Use with caution, as it permanently deletes data.Example:
Command:
docker run -v [VOLUME]:[CONTAINER_PATH] [IMAGE] [COMMAND]:
Mounts a volume into a container at the specified path. Data written to the path inside the container is persisted in the volume.Example:
In this command:
docker run
: This is the command used to run a Docker container.-v my_volume:/data
: This specifies that themy_volume
volume should be mounted into the container at the/data
directory.my_image
: This is the name of the Docker image you want to run as a container.
When you run this command, Docker will create a new container based on the specified image (
my_image
). The my_volume
volume will be mounted into the container at the /data
directory. Any data written to the /data
directory within the container will be stored in the my_volume
volume on the Docker host.This allows you to persist data generated by the container in the
my_volume
volume, ensuring that it remains available even if the container is stopped or removed.Command:
docker run -v [HOST_PATH]:[CONTAINER_PATH] [IMAGE] [COMMAND]:
Binds a directory on the Docker host to a path inside the container. Changes to files in the directory are reflected inside the container and vice versa.Example:
In this command:
docker run
: This is the command used to run a Docker container.-v /host/path:/container/path
: This specifies that the/host/path
directory on the Docker host should be mounted into the container at the/container/path
directory.my_image
: This is the name of the Docker image you want to run as a container.
When you run this command, Docker will create a new container based on the specified image (
my_image
). The /host/path
directory on the Docker host will be mounted into the container at the /container/path
directory. Any files or directories present in /host/path
on the host machine will be accessible from /container/path
inside the container.This allows you to share files or directories between the host and the container, making it useful for development or providing configuration files to the container.
Note: Before running this command, make sure that the
/host/path
directory exists on your Docker host. If it doesn't exist, Docker will create it as a directory inside the container.The command you provided creates a Docker container based on the
mysql
image and attaches an existing volume (997a7e220305eb30a9307c686648f9417f06509e0c9ce28cc4fc2028c513b395
) to the container's /var/lib/mysql
directory.Hereβs the breakdown of the command:
docker container run
: This command is used to create and run a new Docker container.-itd
: These flags are used to run the container in detached mode (-d
), allocate a pseudo-TTY (-t
), and keep STDIN open even if not attached (-i
).-v 997a7e220305eb30a9307c686648f9417f06509e0c9ce28cc4fc2028c513b395:/var/lib/mysql
: This flag mounts the specified volume (997a7e220305eb30a9307c686648f9417f06509e0c9ce28cc4fc2028c513b395
) into the container's/var/lib/mysql
directory.mysql
: This is the name of the Docker image used to create the container.
The volume
997a7e220305eb30a9307c686648f9417f06509e0c9ce28cc4fc2028c513b395
is likely a named volume or a bind-mounted host directory that contains MySQL data. By attaching this volume to the container's /var/lib/mysql
directory, you ensure that the MySQL data persists even if the container is stopped or removed.First list the images available:
Inspect the mysql image:
In the output, check out for volumes and here what I have
This means that docker will mount the volume at this location.
Create a container from MySQL image and list the volumes:
Here the volume with id starting 997 has been created at the location β /var/lib/mysql
Now letβs inspect the volume itself:
The mount point is where you will find the volume minted on the docker host:
Now I will go inside the container and create a few mysql databases and then remove the container:
Now, letβs remove the container:
Create a new container again:
And check the databases:
None of the databases we created and all the data is lost.
We can also create a new container with pre-populated data or say the existing volume. Letβs see how we create a new container with already existing volume.
We have these volumes as of now:
Now to create a container with the volume id 997 already mounted on it, run the below command:
Verifying the same:
Β