{"action":"created","issue":{"url":"https://api.github.com/repos/docker/docker/issues/13161","labels_url":"https://api.github.com/repos/docker/docker/issues/13161/labels{/name}","comments_url":"https://api.github.com/repos/docker/docker/issues/13161/comments","events_url":"https://api.github.com/repos/docker/docker/issues/13161/events","html_url":"https://github.com/docker/docker/pull/13161","id":75664588,"number":13161,"title":"Proposal: Volume refactor and external volume plugins","user":{"login":"calavera","id":1050,"avatar_url":"https://avatars.githubusercontent.com/u/1050?v=3","gravatar_id":"","url":"https://api.github.com/users/calavera","html_url":"https://github.com/calavera","followers_url":"https://api.github.com/users/calavera/followers","following_url":"https://api.github.com/users/calavera/following{/other_user}","gists_url":"https://api.github.com/users/calavera/gists{/gist_id}","starred_url":"https://api.github.com/users/calavera/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calavera/subscriptions","organizations_url":"https://api.github.com/users/calavera/orgs","repos_url":"https://api.github.com/users/calavera/repos","events_url":"https://api.github.com/users/calavera/events{/privacy}","received_events_url":"https://api.github.com/users/calavera/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/docker/docker/labels/status/3-needs-docs-review","name":"status/3-needs-docs-review","color":"c7def8"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/docker/docker/milestones/38","html_url":"https://github.com/docker/docker/milestones/1.7.0","labels_url":"https://api.github.com/repos/docker/docker/milestones/38/labels","id":1010239,"number":38,"title":"1.7.0","description":"Freeze May 26\r\nRelease  June 16","creator":{"login":"dmcgowan","id":169601,"avatar_url":"https://avatars.githubusercontent.com/u/169601?v=3","gravatar_id":"","url":"https://api.github.com/users/dmcgowan","html_url":"https://github.com/dmcgowan","followers_url":"https://api.github.com/users/dmcgowan/followers","following_url":"https://api.github.com/users/dmcgowan/following{/other_user}","gists_url":"https://api.github.com/users/dmcgowan/gists{/gist_id}","starred_url":"https://api.github.com/users/dmcgowan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmcgowan/subscriptions","organizations_url":"https://api.github.com/users/dmcgowan/orgs","repos_url":"https://api.github.com/users/dmcgowan/repos","events_url":"https://api.github.com/users/dmcgowan/events{/privacy}","received_events_url":"https://api.github.com/users/dmcgowan/received_events","type":"User","site_admin":false},"open_issues":25,"closed_issues":24,"state":"open","created_at":"2015-03-07T01:54:49Z","updated_at":"2015-05-22T01:26:10Z","due_on":"2015-05-26T07:00:00Z","closed_at":null},"comments":33,"created_at":"2015-05-12T16:42:23Z","updated_at":"2015-05-22T16:01:56Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/docker/docker/pulls/13161","html_url":"https://github.com/docker/docker/pull/13161","diff_url":"https://github.com/docker/docker/pull/13161.diff","patch_url":"https://github.com/docker/docker/pull/13161.patch"},"body":"Extend the volume backend to accept configurations from an external process, aka plugin. It uses a pseudo rpc to get information from the plugin. Plugin discovery is performed by scanning the `/usr/share/docker/plugins` directory, looking for either a socket named like the volume driver specified or a file that contains the uri to the connection point.\r\n\r\nThis PR also includes a slim version of #13025 and https://github.com/crosbymichael/docker/pull/36.\r\n\r\nTODO:\r\n\r\n- [x] More unit tests\r\n- [x] Integration tests\r\n- [x] Documentation"},"comment":{"url":"https://api.github.com/repos/docker/docker/issues/comments/104698512","html_url":"https://github.com/docker/docker/pull/13161#issuecomment-104698512","issue_url":"https://api.github.com/repos/docker/docker/issues/13161","id":104698512,"user":{"login":"cpuguy83","id":799078,"avatar_url":"https://avatars.githubusercontent.com/u/799078?v=3","gravatar_id":"","url":"https://api.github.com/users/cpuguy83","html_url":"https://github.com/cpuguy83","followers_url":"https://api.github.com/users/cpuguy83/followers","following_url":"https://api.github.com/users/cpuguy83/following{/other_user}","gists_url":"https://api.github.com/users/cpuguy83/gists{/gist_id}","starred_url":"https://api.github.com/users/cpuguy83/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cpuguy83/subscriptions","organizations_url":"https://api.github.com/users/cpuguy83/orgs","repos_url":"https://api.github.com/users/cpuguy83/repos","events_url":"https://api.github.com/users/cpuguy83/events{/privacy}","received_events_url":"https://api.github.com/users/cpuguy83/received_events","type":"User","site_admin":false},"created_at":"2015-05-22T16:01:56Z","updated_at":"2015-05-22T16:01:56Z","body":"Implementing a volume ext I see a couple of issues.\r\nRight now Mount is sent when the container is started and Unmount is sent (or at least would be according to current design but is not actually for some reason...) when the container stops.\r\n\r\nMount/Unmount are presumably supposed to be used for ref counting, however if all containers using a volume are stopped and someone `docker rm -v`'s a container, the ext would think there's nothing using the volume so it's ok to remove.\r\n\r\nThis could be mitigated by only ref-counting based on Create/Remove requests, however this would yield Mount/Unmount pointless (and maybe it is?).\r\n\r\nAlso need to think about daemon restart (and presumably system restart) and making sure that all filesystems are indeed mounted in place so they can be used."}}