ex_docker_build
ex_docker_build copied to clipboard
[feature] add support for caching image layers
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/
Some hints from the uber makisu project - https://github.com/uber/makisu/issues/72
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"
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.