mirror of
https://github.com/containers/podman.git
synced 2025-12-01 10:38:05 +08:00
Docker provides extensibility through a plugin system, of which several types are available. This provides an initial library API for communicating with one type of plugins, volume plugins. Volume plugins allow for an external service to create and manage a volume on Podman's behalf. This does not integrate the plugin system into Libpod or Podman yet; that will come in subsequent pull requests. Signed-off-by: Matthew Heon <mheon@redhat.com>
37 lines
873 B
Markdown
37 lines
873 B
Markdown
# Docker volume extension api.
|
|
|
|
Go handler to create external volume extensions for Docker.
|
|
|
|
## Usage
|
|
|
|
This library is designed to be integrated in your program.
|
|
|
|
1. Implement the `volume.Driver` interface.
|
|
2. Initialize a `volume.Handler` with your implementation.
|
|
3. Call either `ServeTCP` or `ServeUnix` from the `volume.Handler`.
|
|
|
|
### Example using TCP sockets:
|
|
|
|
```go
|
|
d := MyVolumeDriver{}
|
|
h := volume.NewHandler(d)
|
|
h.ServeTCP("test_volume", ":8080")
|
|
```
|
|
|
|
### Example using Unix sockets:
|
|
|
|
```go
|
|
d := MyVolumeDriver{}
|
|
h := volume.NewHandler(d)
|
|
u, _ := user.Lookup("root")
|
|
gid, _ := strconv.Atoi(u.Gid)
|
|
h.ServeUnix("test_volume", gid)
|
|
```
|
|
|
|
## Full example plugins
|
|
|
|
- https://github.com/calavera/docker-volume-glusterfs
|
|
- https://github.com/calavera/docker-volume-keywhiz
|
|
- https://github.com/quobyte/docker-volume
|
|
- https://github.com/NimbleStorage/Nemo
|