Docker images are generated instruction by instruction from the Dockerfile. Though perfectly correct, many images are sub-optimized when we're talking about size. Let's see what we can do about it by building an Apache Docker container on Ubuntu 16.04.
Take the following Dockerfile
, which updates the Ubuntu image, installs the apache2
package, and then removes the /var/lib/apt
cache folder. It's perfectly correct, and if you build it, the image size is around 260 MB:
FROM ubuntu:16.04 RUN apt-get update -y RUN apt-get install -y apache2 RUN rm -rf /var/lib/apt ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Now, each layer is added on top of the previous. So, what's written during the apt-get update
layer is written forever, even if we remove it in the last RUN
.
Let's rewrite this Dockerfile
using a one-liner, to save some space:
FROM ubuntu:16.04 RUN apt...