apache / apache/opendal

new feature: [Integration] Docker Plugin For OpenDAL

Open
#4,955 4 comments 1 reaction 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
5.4k
Forks
825
Avg merge
1d 14m
Merged PRs (30d)
127

Description

### Feature Description

> Docker Engine volume plugins enable Engine deployments to be integrated with external storage systems such as Amazon EBS, and enable data volumes to persist beyond the lifetime of a single Docker host

FYI: https://docs.docker.com/engine/extend/plugins_volume/

### Problem and Solution

Implement A Docker Volume Plugin for OpenDAL, so users can integrate Docker with OpenDAL in this way:
```yaml
services:
app:
image: whatever/image
volumes: [configdata:/config]
volumes:
configdata:
driver: opendal
driver_opts:
root: "/"
```

### Additional Context

As a volume plugin, we need to implement [Volume Plugin Protocol](https://docs.docker.com/engine/extend/plugins_volume/#volume-plugin-protocol). It is an HTTP server that registers itself so the Docker daemon can find it and use it.

While implementing plugins is language-agnostic, it is notable that Go has [a plugin helper](https://github.com/docker/go-plugins-helpers) that benefits for developing.

Rclone has a docker volume plugin too. FYI: https://rclone.org/docker

### Are you willing to contribute to the development of this feature?

- [X] Yes, I am willing to contribute to the development of this feature.

Contributor guide

Open the contributing guide

Research direction

Start by reading Docker's Volume Plugin Protocol and the docker/go-plugins-helpers reference linked in the issue. Determine how the plugin should register its HTTP server and map the Compose volume configuration to OpenDAL. Done means Docker can discover the opendal driver and use it for the example volume configuration.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker
Domain
infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.