Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

This is a volume plugin for Docker, allowing Docker containers to enjoy persistent volumes residing on ploop, either locally or on the distributed Virtuozzo Storage file system.


To use this plugin with Virtuozzo Storage, you need to have it up and running.

Alternatively, to use this plugin with ploop, you need to have Virtuozzo or OpenVZ up and running.

Surely, you need Docker v1.13+ up and running.


This guide assumes you are using a recent version of Virtuozzo, Virtuozzo Storage, or OpenVZ, and already have Docker up and running.

The recommended way of installation is from the repository. This is as easy as:

docker plugin install virtuozzo/ploop vstorage.source=[VSTORAGE MOUNT POINT]

Alternatively, you can build the plugin from source, for details, see


First, you need to set home path for the plugin.

# Set the plugin home directory
docker plugin set virtuozzo/ploop vstorage.source=/mnt/vstorage/docker

You can set a default size for volumes and other options:

docker plugin set virtuozzo/ploop args="-size 12Gb -debug"

Now you can start the plugin:

docker plugin enable virtuozzo/ploop


Once docker and docker-volume-ploop are running, you can create a volume:

docker volume create -d virtuozzo/ploop -o size=512G --name MyFirstVolume

To run a container with the volume:

docker run -it -v VOLUME:/MOUNT alpine /bin/ash

Here VOLUME is the volume name, and MOUNT is the path under which the volume will be available inside a container. For example:

docker run -it -v MyFirstVolume:/mnt alpine /bin/ash

See man docker volume for other volume operations. For example, to list existing volumes:

docker volume ls


Docker with Virtuozzo/OpenVZ kernel

For Docker to work, you need to make sure conntracks are enabled on the host. In case it's not done, docker might complain like this:

Error starting daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain: iptables failed: iptables --wait -t nat -N DOCKER: iptables v1.4.21: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\n (exit status 3)

To fix, edit /etc/modprobe.d/parallels.conf (or /etc/modprobe.d/openvz.conf) to look like this:

options nf_conntrack ip_conntrack_disable_ve0=0

In other words, the value should be set to 0. After making the change, reboot the machine.

Miscellaneous ploop operations

The following is the quick introduction of what operations can be performed with ploop images. For more detailed information about ploop, see

Use ploop command line tool, and refer to an image by path to DiskDescriptor.xml file. This driver creates images under img subdirectory of its home. So, to use the following commands, you need to cd to the image directory, for example:

cd /pcs/img/MyFirstVol/


To create a snapshot:

ploop snapshot DiskDescriptor.xml

To list snapshots:

ploop snapshot-list DiskDescriptor.xml

To delete a snapshot:

ploop snapshot-delete -u UUID DiskDescriptor.xml

To mount a snapshot (read-only):

ploop mount -r -u UUID -m MOUNT_POINT DiskDescriptor.xml


To resize an image (can be done while it's running):

ploop resize -s SIZE DiskDescriptor.xml


In case something is wrong (ploop image can't be mounted etc.), you might want to check it.

ploop check DiskDescriptor.xml

If you want to run fsck on an inner filesystem, you can use the following command:

ploop mount -F DiskDescriptor.xml

Don't forget to unmount it:

ploop umount DiskDescriptor.xml


This software is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.




Docker volume plugin supporting Virtuozzo Storage and ploop







No packages published