Reasons to consider:
- I personally don't want to put all the
packages in my docker image unless I
know I need them. Example SSH Server in PHP7 or Nginx that you
mentioned. It's not a vm, it's a container.
- Looks like they are trying to make a
container like a full VM, long
running with multi services. Docker philosophy is using
microservices, and separate them in multiple containers, This has many advantages like: fault isolation, easier upgrades, scaling, etc.
- Fixes
APT: This fix is in official ubuntu image too.
- These kind of images come with alot of complications, and remove the simplicity of
microservices design. I'm sure it will get in your way.
I recommend using library images for known technologies, ie. PHP, Apache, etc. Using this + microservices will help your greatly long term. Now if you want to make your own images, I recommend using library base images like alpine, for being lightweight, or debian because amost all library images are based on them.
You have another option called scratch:
You can use Docker’s reserved, minimal image, scratch, as a starting point for building containers. Using the scratch image signals to the build process that you want the next command in the Dockerfile to be the first filesystem layer in your image.
While scratch appears in Docker’s repository on the hub, you can’t pull it, run it, or tag any image with the name scratch. Instead, you can refer to it in your Dockerfile.
FROM scratch
...