Hi thanks for this wonderful assignment! Docker tarballs and sends everything in the working directory to its Docker daemon. Thus, if one has written some code and compiled (thus lots of intermediate files) and trigger docker build, then he will accidentally tarballs all of the intermediate files (which can be large) and send to daemon, which can take some additional time.
Solution: For example, create a subfolder named image and put Dockerfile to image/Dockerfile. Then trigger docker build there, and almost nothing will need to be tarballed.
Just a tiny suggestion, of course not a big problem :)