{"action":"created","issue":{"url":"https://api.github.com/repos/docker/docker/issues/24711","repository_url":"https://api.github.com/repos/docker/docker","labels_url":"https://api.github.com/repos/docker/docker/issues/24711/labels{/name}","comments_url":"https://api.github.com/repos/docker/docker/issues/24711/comments","events_url":"https://api.github.com/repos/docker/docker/issues/24711/events","html_url":"https://github.com/docker/docker/pull/24711","id":165904771,"number":24711,"title":"Proposal: plugin mechanism for sharing image cache between machines","user":{"login":"KJTsanaktsidis","id":1418177,"avatar_url":"https://avatars.githubusercontent.com/u/1418177?v=3","gravatar_id":"","url":"https://api.github.com/users/KJTsanaktsidis","html_url":"https://github.com/KJTsanaktsidis","followers_url":"https://api.github.com/users/KJTsanaktsidis/followers","following_url":"https://api.github.com/users/KJTsanaktsidis/following{/other_user}","gists_url":"https://api.github.com/users/KJTsanaktsidis/gists{/gist_id}","starred_url":"https://api.github.com/users/KJTsanaktsidis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KJTsanaktsidis/subscriptions","organizations_url":"https://api.github.com/users/KJTsanaktsidis/orgs","repos_url":"https://api.github.com/users/KJTsanaktsidis/repos","events_url":"https://api.github.com/users/KJTsanaktsidis/events{/privacy}","received_events_url":"https://api.github.com/users/KJTsanaktsidis/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/docker/docker/labels/group/distribution","name":"group/distribution","color":"F6FBFF"},{"url":"https://api.github.com/repos/docker/docker/labels/kind/feature","name":"kind/feature","color":"AAB3AB"},{"url":"https://api.github.com/repos/docker/docker/labels/status/1-design-review","name":"status/1-design-review","color":"fef2c0"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2016-07-16T02:45:22Z","updated_at":"2016-08-04T16:38:51Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/docker/docker/pulls/24711","html_url":"https://github.com/docker/docker/pull/24711","diff_url":"https://github.com/docker/docker/pull/24711.diff","patch_url":"https://github.com/docker/docker/pull/24711.patch"},"body":"**- What I did**\r\nIn this PR, I propose a plugin mechanism for the daemon to request\r\ncached images from a plugin. I believe a plugin is appropriate here\r\nbecause there are several different ways such sharing might work\r\ndepending on the lifecycle of the machines being used.\r\n\r\n**- How I did it**\r\nN/A\r\n\r\n**- How to verify it**\r\nN/A\r\n\r\n**- Description for the changelog**\r\nProposal: plugin mechanism for sharing image cache between machines\r\n\r\n**- A picture of a cute animal (not mandatory but encouraged)**\r\n![sant01-10a-penguinonseal](https://cloud.githubusercontent.com/assets/1418177/16892352/26521348-4b53-11e6-9c24-ad5380b63ac8.jpg)\r\n\r\n\r\nAs has been discussed extensively in #20316 , Docker now no longer\r\nrestores parent image chains when pulling from a registry, and people\r\nwho relied on this to cache builds across multiple machines have had\r\ntheir build times blow out.\r\n\r\nI'm PR'ing this to get some feedback from the maintainers & community on\r\nthis idea. If people agree that this is the way forward, I'd like to\r\nstart working on this. It doesn't appear to me that the implementation\r\nof the plugin surface would be especially difficult or disruptive - but\r\nI want your thoughts on this :)\r\n\r\nEDIT: correct the issue link"},"comment":{"url":"https://api.github.com/repos/docker/docker/issues/comments/237610124","html_url":"https://github.com/docker/docker/pull/24711#issuecomment-237610124","issue_url":"https://api.github.com/repos/docker/docker/issues/24711","id":237610124,"user":{"login":"tonistiigi","id":585223,"avatar_url":"https://avatars.githubusercontent.com/u/585223?v=3","gravatar_id":"","url":"https://api.github.com/users/tonistiigi","html_url":"https://github.com/tonistiigi","followers_url":"https://api.github.com/users/tonistiigi/followers","following_url":"https://api.github.com/users/tonistiigi/following{/other_user}","gists_url":"https://api.github.com/users/tonistiigi/gists{/gist_id}","starred_url":"https://api.github.com/users/tonistiigi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tonistiigi/subscriptions","organizations_url":"https://api.github.com/users/tonistiigi/orgs","repos_url":"https://api.github.com/users/tonistiigi/repos","events_url":"https://api.github.com/users/tonistiigi/events{/privacy}","received_events_url":"https://api.github.com/users/tonistiigi/received_events","type":"User","site_admin":false},"created_at":"2016-08-04T16:38:51Z","updated_at":"2016-08-04T16:38:51Z","body":"@KJTsanaktsidis https://github.com/tonistiigi/buildcache is an incomplete but completely functional tool to save build cache for docker v1.11+ that doesn't have most of the problems listed in your description of load/save method. The cache file is small(around 1KB) and doesn't have much overhead.\r\n\r\nRegarding your interface example, I'm not sure I understand how this would work. How would a plugin get this data so it can make a decision like this. We do not want to implement alternative distribution scheme of images. Also, it's impossible for a plugin to find an image based on just runconfig(unless it only looks local images like atm), if it did that we would expose the security problem again as anyone can fill this cache with the same runconfig but completely different image. The cache can only come from a trusted location for a specific repo."}}
{"actor":{"display_login":"tonistiigi"}}