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
...