ex_docker_build icon indicating copy to clipboard operation
ex_docker_build copied to clipboard

[feature] add support for caching image layers

Open sescobb27 opened this issue 6 years ago • 3 comments

I have been investigating this without success, it seems we need to generate a SH256 hash some image configuration in order to generate an ImageId, then, we need to check if that ImageId does exist, if it does use it, else create a new one. The problem is that I haven't been able to recreate the ImageId

Resources found

https://stackoverflow.com/questions/47249028/how-to-generate-docker-image-layer-diffid https://github.com/moby/moby/blob/master/image/image.go https://github.com/moby/moby/blob/master/image/image_test.go https://github.com/moby/moby/blob/master/image/store.go https://github.com/moby/moby/blob/master/image/store_test.go https://stackoverflow.com/questions/39299597/how-is-digest-of-docker-image-calculated https://docs.docker.com/engine/reference/commandline/images/#list-the-full-length-image-ids https://gist.github.com/aaronlehmann/b42a2eaf633fc949f93b#new-image-config https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#leverage-build-cache https://stackoverflow.com/questions/38655630/how-does-docker-know-when-to-use-the-cache-during-a-build-and-when-not https://windsock.io/explaining-docker-image-ids/

sescobb27 avatar Jan 30 '19 12:01 sescobb27

Some hints from the uber makisu project - https://github.com/uber/makisu/issues/72

ghost avatar Jul 03 '19 00:07 ghost

i think this is related to this issue:

when we are trying to build new images that were already built we are having this error message on intermediary containers

12:37:09.242 [error] error running task 1 for esl/foo-phx-cowboy-2.6#0.0.2 reason: "{\"message\":\"Conflict. The container name \\\"/builder\\\" is already in use by container \\\"9d9580f9ba7a1174009336699cf77d6c22da2e7b4df9b6f7bc27b6c63870953f\\\". You have to remove (or rename) that container to be able to reuse that name.\"}\n"

sescobb27 avatar Oct 08 '19 17:10 sescobb27

i think this is related to this issue:

when we are trying to build new images that were already built we are having this error message on intermediary containers

12:37:09.242 [error] error running task 1 for esl/foo-phx-cowboy-2.6#0.0.2 reason: "{\"message\":\"Conflict. The container name \\\"/builder\\\" is already in use by container \\\"9d9580f9ba7a1174009336699cf77d6c22da2e7b4df9b6f7bc27b6c63870953f\\\". You have to remove (or rename) that container to be able to reuse that name.\"}\n"

So when building - we should use an autogenerated UUID name instead of builder? Cleaning up "builder" would not be in itself sufficient as there might be two builds running concurrently, both invoking the API of the single docker daemon.

ghost avatar Oct 09 '19 10:10 ghost