Differences between revisions 1 and 2
Revision 1 as of 2023-04-04 22:43:53
Size: 1926
Comment:
Revision 2 as of 2023-04-04 22:50:47
Size: 2679
Comment:
Deletions are marked like this. Additions are marked like this.
Line 84: Line 84:
----



== Alternative Drivers ==

All of the above examples make use of the '''local volume driver''', which simply means that volumes are managed locally.

Alternative volume drivers exist primarily for distributed and highly available deployments. In some cases, volumes can be shared by multiple containers.

As an example, try:

{{{
docker plugin install --grant-all-permissions vieux/sshfs
docker volume create \
  --driver vieux/sshfs \
  --opt sshcmd=test@node2:/home/test \
  --opt password=testpassword \
  ssh-vol
docker run --detach --name sshfs-container \
  --volume-driver vieux/sshfs \
  --mount src=ssh-vol,dst=/app,volume-opt=sshcmd=test@node2:/home/test,volume-opt=password=testpassword \
  nginx:latest
}}}

Docker Volumes

Volumes are file objects that dockerd(8) manages for a container. While they are written to the host file system, users should only interface with them as a volume name.


Creating Volumes

To create a new volume, try:

docker volume create my-vol

A container can be created with an existing volume mounted into it.

docker run --interactive --tty --rm --name my-alpine \
  --mount src=my-vol,dst=/app \
  alpine:latest

A container can also be created with a new volume.

docker run --detach --name=nginxtest \
  --mount src=nginx-vol,dst=/usr/share/nginx/html \
  nginx:latest

The volume is implicitly created and the contents of the destination directory are written into the newly-initialized volume.


Destroying Volumes

After a container is stopped and destroyed, any volumes used will persist. This may or may not be desirable.

To list all volumes, try:

docker volume ls

To delete a volume, try:

docker volume rm my-vol


Docker Compose

Volumes are very common with Docker Compose as the use of a volume abstracts away the local filesystem in a way that sidesteps common issues for reproducibility and reuse.

  • There is no expectation of local directory structure.
  • Filesystem-specific concerns (especially with Zfs or Btrfs) are handled by system configurations.

  • File ownership and permissions are much less likely to become a problem.

To use a volume, create a docker-compose.yml file like:

services:
  frontend:
    image: node:lts
    volumes:
      - myapp:/home/node/app

volumes:
  myapp:

This can create a need to review and manually delete volumes on a recurring basis. See above for details.


Alternative Drivers

All of the above examples make use of the local volume driver, which simply means that volumes are managed locally.

Alternative volume drivers exist primarily for distributed and highly available deployments. In some cases, volumes can be shared by multiple containers.

As an example, try:

docker plugin install --grant-all-permissions vieux/sshfs
docker volume create \
  --driver vieux/sshfs \
  --opt sshcmd=test@node2:/home/test \
  --opt password=testpassword \
  ssh-vol
docker run --detach --name sshfs-container \
  --volume-driver vieux/sshfs \
  --mount src=ssh-vol,dst=/app,volume-opt=sshcmd=test@node2:/home/test,volume-opt=password=testpassword \
  nginx:latest


CategoryRicottone

Docker/Volumes (last edited 2023-04-05 14:40:48 by DominicRicottone)