| title | Graphdriver plugins |
|---|---|
| description | How to manage image and container filesystems with external plugins |
| keywords | Examples, Usage, storage, image, docker, data, graph, plugin, api |
| advisory | experimental |
- Support v2 plugins
Docker graph driver plugins enable admins to use an external/out-of-process graph driver for use with Docker engine. This is an alternative to using the built-in storage drivers, such as aufs/overlay/devicemapper/btrfs.
You need to install and enable the plugin and then restart the Docker daemon before using the plugin. See the following example for the correct ordering of steps.
$ docker plugin install cpuguy83/docker-overlay2-graphdriver-plugin # this command also enables the driver
<output suppressed>
$ pkill dockerd
$ dockerd --experimental -s cpuguy83/docker-overlay2-graphdriver-plugin
See the plugin documentation for detailed information on the underlying plugin protocol.
If a plugin registers itself as a GraphDriver when activated, then it is
expected to provide the rootfs for containers as well as image layer storage.
Request:
{
"Home": "/graph/home/path",
"Opts": [],
"UIDMaps": [],
"GIDMaps": []
}Initialize the graph driver plugin with a home directory and array of options. These are passed through from the user, but the plugin is not required to parse or honor them.
The request also includes a list of UID and GID mappings, structed as follows:
{
"ContainerID": 0,
"HostID": 0,
"Size": 0
}Response:
{
"Err": ""
}Respond with a non-empty string error if an error occurred.
Request:
{}Get behavioral characteristics of the graph driver. If a plugin does not handle this request, the engine will use default values for all capabilities.
Response:
{
"ReproducesExactDiffs": false,
}Respond with values of capabilities:
- ReproducesExactDiffs Defaults to false. Flags that this driver is capable of reproducing exactly equivalent diffs for read-only filesystem layers.
Request:
{
"ID": "46fe8644f2572fd1e505364f7581e0c9dbc7f14640bd1fb6ce97714fb6fc5187",
"Parent": "2cd9c322cb78a55e8212aa3ea8425a4180236d7106938ec921d0935a4b8ca142",
"MountLabel": "",
"StorageOpt": {}
}Create a new, empty, read-only filesystem layer with the specified
ID, Parent and MountLabel. If Parent is an empty string, there is no
parent layer. StorageOpt is map of strings which indicate storage options.
Response:
{
"Err": ""
}Respond with a non-empty string error if an error occurred.
Request:
{
"ID": "46fe8644f2572fd1e505364f7581e0c9dbc7f14640bd1fb6ce97714fb6fc5187",
"Parent": "2cd9c322cb78a55e8212aa3ea8425a4180236d7106938ec921d0935a4b8ca142",
"MountLabel": "",
"StorageOpt": {}
}Similar to /GraphDriver.Create but creates a read-write filesystem layer.
Request:
{
"ID": "46fe8644f2572fd1e505364f7581e0c9dbc7f14640bd1fb6ce97714fb6fc5187"
}Remove the filesystem layer with this given ID.
Response:
{
"Err": ""
}Respond with a non-empty string error if an error occurred.
Request:
{
"ID": "46fe8644f2572fd1e505364f7581e0c9dbc7f14640bd1fb6ce97714fb6fc5187",
"MountLabel": ""
}Get the mountpoint for the layered filesystem referred to by the given ID.
Response:
{
"Dir": "/var/mygraph/46fe8644f2572fd1e505364f7581e0c9dbc7f14640bd1fb6ce97714fb6fc5187",
"Err": ""
}Respond with the absolute path to the mounted layered filesystem. Respond with a non-empty string error if an error occurred.
Request:
{
"ID": "46fe8644f2572fd1e505364f7581e0c9dbc7f14640bd1fb6ce97714fb6fc5187"
}Release the system resources for the specified ID, such as unmounting the
filesystem layer.
Response:
{
"Err": ""
}Respond with a non-empty string error if an error occurred.
Request:
{
"ID": "46fe8644f2572fd1e505364f7581e0c9dbc7f14640bd1fb6ce97714fb6fc5187"
}Determine if a filesystem layer with the specified ID exists.
Response:
{
"Exists": true
}Respond with a boolean for whether or not the filesystem layer with the specified
ID exists.