{"action":"created","issue":{"url":"https://api.github.com/repos/coreos/rkt/issues/2313","repository_url":"https://api.github.com/repos/coreos/rkt","labels_url":"https://api.github.com/repos/coreos/rkt/issues/2313/labels{/name}","comments_url":"https://api.github.com/repos/coreos/rkt/issues/2313/comments","events_url":"https://api.github.com/repos/coreos/rkt/issues/2313/events","html_url":"https://github.com/coreos/rkt/issues/2313","id":142501117,"number":2313,"title":"store: using native content addresses for docker image layers","user":{"login":"philips","id":33544,"avatar_url":"https://avatars.githubusercontent.com/u/33544?v=3","gravatar_id":"","url":"https://api.github.com/users/philips","html_url":"https://github.com/philips","followers_url":"https://api.github.com/users/philips/followers","following_url":"https://api.github.com/users/philips/following{/other_user}","gists_url":"https://api.github.com/users/philips/gists{/gist_id}","starred_url":"https://api.github.com/users/philips/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/philips/subscriptions","organizations_url":"https://api.github.com/users/philips/orgs","repos_url":"https://api.github.com/users/philips/repos","events_url":"https://api.github.com/users/philips/events{/privacy}","received_events_url":"https://api.github.com/users/philips/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/coreos/rkt/labels/area/performance","name":"area/performance","color":"bfe5bf"},{"url":"https://api.github.com/repos/coreos/rkt/labels/area/security","name":"area/security","color":"bfe5bf"},{"url":"https://api.github.com/repos/coreos/rkt/labels/area/usability","name":"area/usability","color":"bfe5bf"},{"url":"https://api.github.com/repos/coreos/rkt/labels/component/stage0","name":"component/stage0","color":"0052cc"},{"url":"https://api.github.com/repos/coreos/rkt/labels/component/store","name":"component/store","color":"0052cc"},{"url":"https://api.github.com/repos/coreos/rkt/labels/kind/enhancement","name":"kind/enhancement","color":"c7def8"}],"state":"open","locked":false,"assignee":{"login":"sgotti","id":1690273,"avatar_url":"https://avatars.githubusercontent.com/u/1690273?v=3","gravatar_id":"","url":"https://api.github.com/users/sgotti","html_url":"https://github.com/sgotti","followers_url":"https://api.github.com/users/sgotti/followers","following_url":"https://api.github.com/users/sgotti/following{/other_user}","gists_url":"https://api.github.com/users/sgotti/gists{/gist_id}","starred_url":"https://api.github.com/users/sgotti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sgotti/subscriptions","organizations_url":"https://api.github.com/users/sgotti/orgs","repos_url":"https://api.github.com/users/sgotti/repos","events_url":"https://api.github.com/users/sgotti/events{/privacy}","received_events_url":"https://api.github.com/users/sgotti/received_events","type":"User","site_admin":false},"assignees":[{"login":"sgotti","id":1690273,"avatar_url":"https://avatars.githubusercontent.com/u/1690273?v=3","gravatar_id":"","url":"https://api.github.com/users/sgotti","html_url":"https://github.com/sgotti","followers_url":"https://api.github.com/users/sgotti/followers","following_url":"https://api.github.com/users/sgotti/following{/other_user}","gists_url":"https://api.github.com/users/sgotti/gists{/gist_id}","starred_url":"https://api.github.com/users/sgotti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sgotti/subscriptions","organizations_url":"https://api.github.com/users/sgotti/orgs","repos_url":"https://api.github.com/users/sgotti/repos","events_url":"https://api.github.com/users/sgotti/events{/privacy}","received_events_url":"https://api.github.com/users/sgotti/received_events","type":"User","site_admin":false}],"milestone":null,"comments":6,"created_at":"2016-03-21T23:34:16Z","updated_at":"2016-09-07T23:56:57Z","closed_at":null,"body":"Today to pull and store docker images we use docker2aci which flattens a docker image into a single ACI image and then places it into the rkt store. This made sense when we started working on Docker integration at the time because Docker images did not have a content-addressable ID. Today, Docker images do have a CAS address so we should consider storing each layer in our own store using that address.\r\n\r\nThis will have a few advantages:\r\n\r\n1. We can take advantage of cache hits when someone tries to download an image with a content-address we already have\r\n\r\n2. We can avoid the costly content conversion of taking all of the layers and flattening the image\r\n\r\n3. A user could reference or run a docker image by its CAS id.\r\n\r\nNow, there are a number of things to sort out such as:\r\n\r\n- How do we support multiple CAS types, for example docker addresses are sha256\r\n- Do we create an ACI that just references the other layers and converts only the v1 image config? https://github.com/docker/docker/blob/master/image/spec/v1.md#image-json-description\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/coreos/rkt/issues/comments/245455406","html_url":"https://github.com/coreos/rkt/issues/2313#issuecomment-245455406","issue_url":"https://api.github.com/repos/coreos/rkt/issues/2313","id":245455406,"user":{"login":"philips","id":33544,"avatar_url":"https://avatars.githubusercontent.com/u/33544?v=3","gravatar_id":"","url":"https://api.github.com/users/philips","html_url":"https://github.com/philips","followers_url":"https://api.github.com/users/philips/followers","following_url":"https://api.github.com/users/philips/following{/other_user}","gists_url":"https://api.github.com/users/philips/gists{/gist_id}","starred_url":"https://api.github.com/users/philips/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/philips/subscriptions","organizations_url":"https://api.github.com/users/philips/orgs","repos_url":"https://api.github.com/users/philips/repos","events_url":"https://api.github.com/users/philips/events{/privacy}","received_events_url":"https://api.github.com/users/philips/received_events","type":"User","site_admin":false},"created_at":"2016-09-07T23:56:57Z","updated_at":"2016-09-07T23:56:57Z","body":"I think this is a bug because Tag will be empty but we actually don't care about checking the tag: https://github.com/appc/docker2aci/blob/master/lib/internal/backend/repository/repository2.go#L337"}}
{"actor":{"display_login":"philips"}}