Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new feature: [Integration] Docker Plugin For OpenDAL #4955

Open
1 task done
yuchanns opened this issue Aug 2, 2024 · 4 comments
Open
1 task done

new feature: [Integration] Docker Plugin For OpenDAL #4955

yuchanns opened this issue Aug 2, 2024 · 4 comments
Labels
enhancement New feature or request

Comments

@yuchanns
Copy link
Member

yuchanns commented Aug 2, 2024

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:

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. 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 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?

  • Yes, I am willing to contribute to the development of this feature.
@yuchanns yuchanns added the enhancement New feature or request label Aug 2, 2024
@Xuanwo
Copy link
Member

Xuanwo commented Aug 2, 2024

Interesting. I'm not very familiar with how Docker volumes work. It seems we can implement such a volume plugin, but I'm unsure about the IO processes involved. I assume we need to mount a filesystem to a path, and then the application accesses that path directly?

@yuchanns
Copy link
Member Author

yuchanns commented Aug 5, 2024

I assume we need to mount a filesystem to a path, and then the application accesses that path directly?

Yes, we need to mount and access it. It relies on either fuse3_opendal or virtiofs_opendal.

@zjregee
Copy link
Member

zjregee commented Aug 5, 2024

This looks cool, does this plugin do something similar to parsing the configuration and helping start an opendal-based file system? virtiofs probably wouldn't be an option since it can't be mounted on the host side, but fuse would work fine!

@yuchanns
Copy link
Member Author

yuchanns commented Aug 5, 2024

Does this plugin do something similar to parsing the configuration and helping start an opendal-based file system?

Yes. And it shares volumes across multiple containers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants