I’ve been seeing a new behavior since early June that I think may be related to a version mismatch between Circle 1.0’s Docker 1.9 and a possible upgrade to 2.x by Docker Hub. The image IDs I create and push to Hub do not match the image IDs that get pulled back, so re-use of lower layers is effectively broken. Everything still sort-of works, but requires substantially longer periods of time to complete due to failed re-use.
I wrote up a detailed description of the behavior in this comment on Github; I believe that Circle’s use of 1.9 vs. an apparent image format change in 1.10 may be the root of the problem.