This image is used to build Skia with gcc, for example, testing the default Bazel toolchain
on the Skia build rules.

When the image needs to rebuilt, the associated sha256 of the final image should be used to
refer to it.