In the development image, include the full portage tree, and any binary
packages and sources.
In the runtime image, exclude the portage tree and related files. When
installing, we will use `--volumes-from` to mount those from a
development image container.
If `docker images` fails to find any dangling images, it returns no
values and `docker rmi` complains there's nothing to delete. The
clean-up step failing is annoying rather than harmful.
This allows us to ship a "development" image that has all the binaries
and Portage tree embedded, and a "runtime" image without.
To install a package, we spin up the "development" image into a running
container and let it build any additional packages needed, then we can
spin up the runtime using `--volumes-from` pointing at the development
container before running `emerge -K` to install them.
After that is done, `docker commit` will commit that instance of the
runtime image to a new image which is our bundled package container.
This does bloat the images out a bit, but:
- it removes one variable factor from builds, namely the host's portage
tree
- in the runtime container, you'll only be storing it once