{"id":16021194,"url":"https://github.com/cirocosta/nfsvol","last_synced_at":"2026-04-30T15:32:33.738Z","repository":{"id":73883852,"uuid":"95611475","full_name":"cirocosta/nfsvol","owner":"cirocosta","description":"Docker Volume Plugin for managing NFS storage - WIP","archived":false,"fork":false,"pushed_at":"2017-10-13T19:43:10.000Z","size":2433,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-24T18:27:55.321Z","etag":null,"topics":["docker","docker-plugin","go","golang","nfs","volume"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cirocosta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-06-28T00:14:15.000Z","updated_at":"2024-07-17T21:10:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"c178f95e-94b7-4508-ac98-bb12964f25f5","html_url":"https://github.com/cirocosta/nfsvol","commit_stats":{"total_commits":30,"total_committers":2,"mean_commits":15.0,"dds":"0.033333333333333326","last_synced_commit":"75152ae4e7ce34fd01e030395ac07c392b99feb0"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cirocosta/nfsvol","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fnfsvol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fnfsvol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fnfsvol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fnfsvol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cirocosta","download_url":"https://codeload.github.com/cirocosta/nfsvol/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fnfsvol/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32469344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-plugin","go","golang","nfs","volume"],"created_at":"2024-10-08T18:02:03.271Z","updated_at":"2026-04-30T15:32:33.725Z","avatar_url":"https://github.com/cirocosta.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003enfsvol 📂  \u003c/h1\u003e\n\n\u003ch5 align=\"center\"\u003eDocker Volume Plugin for managing NFS storage\u003c/h5\u003e\n\n\u003cbr/\u003e\n\n\n## Quickstart\n\nThe plugin assumes there's a directory in the host named `/mnt/nfs` which is where you have NFS mounted to.\nThis doesn't mean that you *really* need to have that as a NFS mount point. The plugin will put files there; not having NFS will only mean that it won't be distributed across hosts.\n\n(are you a `docker-for-mac` user? Issue `docker run --rm --privileged --pid=host justincormack/nsenter1 /bin/sh -c 'mkdir -p /mnt/nfs'` to create `/mnt/nfs` inside the docker-for-mac VM. For more about the command, see #Tips section).\n\n\nHaving that, install the plugin:\n\n```sh\ndocker plugin install \\\n        --grant-all-permissions \\\n        --alias nfsvol \\\n        cirocosta/nfsvol\n```\n\nIf nothing went bad (Docker would complain) you can create named volumes and use them:\n\n```sh\ndocker volume create \\\n        --driver nfsvol \\\n        myvolume1\n\ndocker run \\\n        -it \\\n        -v myvolume2:/somewhere \\\n        alpine \\\n        echo 'heyhey' \u003e /somewhere/file2.txt\n\ndocker run \\\n        -it \\\n        -v myvolume3:/somewhere \\\n        alpine \\\n        echo 'heyhey' \u003e /somewhere/file1.txt\n```\n\n\nThe effect of this is having the data under a well defined structure under your NFS mount:\n\n\n```\n/mnt\n  /nfs\n    /myvolume1\n    /myvolume2\n      /file2.txt\n    /myvolume3\n      /file3.txt\n```\n\n## Tips (Docker-for-{mac,aws})\n\nYou can check whether you have a NFS mount active by using the `mount` command on Linux. For instance, using AWS EFS as the NFS mount point:\n\n```sh\nmount\n\n/dev/xvdb1 on / type ext4 (rw,relatime,data=ordered)\n/dev/xvdb1 on /mnt type ext4 (rw,relatime,data=ordered)\nproc on /proc type proc (rw,nosuid,nodev,noexec,relatime)\ntmpfs on /dev type tmpfs (rw,nosuid,mode=755)\n\n...\n\n# what we want:\n\u003cfs-id\u003e.efs.us-west-2.amazonaws.com:/ on /mnt/nfs type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=\u003caddress\u003e,local_lock=none,addr=\u003caddress\u003e)\n```\n\nIn case you're running `docker-for-mac` or `docker-for-aws` you don't have direct access to the host out of the box. For both cases you can use `justincormack/nsenter1` alongside `--pid` argument to enter the namespaces used for the pid 1 of the machine, giving you access to the filesystem:\n\n```sh\ndocker run \\\n        --rm \\\n        -it \\\n        --privileged \\\n        --pid=host \\\n        justincormack/nsenter1 \\\n        /bin/sh\n```\n\nHaving done that, just `mkdir -p /mnt/nfs`.\n\n\n## Mounting Inside or Outside?\n\nThis plugin assumes that a NFS moint-point exists in the host. The rationale for keeping it outside the plugin container is that this way we can keep the NFS statistics going through `node_exporter`. \n\nIn the TODO list we could extend this plugin to support mounting NFS at start up time and make more sense to have `nfs` in the name 🙌\n\n\n[![Build Status](https://travis-ci.com/cirocosta/nfsvol.svg?token=ixZ9XiEPW4YH62ixq7Av\u0026branch=master)](https://travis-ci.com/cirocosta/nfsvol)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcirocosta%2Fnfsvol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcirocosta%2Fnfsvol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcirocosta%2Fnfsvol/lists"}