Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

164
Views
What is the overhead of creating docker images?

I'm exploring using docker so that we deploy new docker images instead of specific file changes, so all of the needs of the application come with each deployment etc.

Question 1:

If I add a new application file, say 10 MB, to a docker image when I deploy the new image, using the tools in Docker tool box, will this require the deployment of an entirely new image to my containers or do docker deployments just take the difference between the 2, similar to git version control?

Another way to put it, I looked on a list of docker base images and saw a version of ubuntu that is 188 MB. If I commit a new application to a docker image, using this base image, will my docker containers need to pull the full 188 MB, which they are already running, plus the application or is there a differential way of just getting what has changed?

Supplementary Question

Am I correct in assuming when using docker, deploying images is the intended approach? Meaning any new changes should require a new image deployment so that images are treated as immutable? When I was using AWS we followed this approach with AMI (Amazon Machine Images) but storing AMIs had low overhead, for docker I don't know yet.

Or is it a better practice to deploy dockerfiles and have the new image be built on the container itself?

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Docker uses a layered union filesystem, only one copy of a layer will be pulled by a docker engine and stored on its filesystem. When you build an image, docker will check its layer cache to see if the same parent layer and same command have been used to build an existing layer, and if so, the cache is reused instead of building a new layer. Once any step in the build creates a new layer, all following steps will create new layers, so the order of your Dockerfile matters. You should add frequently changing steps to the end of the Dockerfile so the earlier steps can be cached.

Therefore, if you use a 200MB base image, have 50MB of additions, but only 10MB are new additions at the end of your Dockerfile, you'd push 250MB the first time to a docker engine, but only 10MB to an engine that already had a previous copy of that image, or 50MB to an engine that just had the 200MB base image.

The best practice with images is to build them once, push them to a registry (either self hosted using the registry image, cloud hosted by someone like AWS, or on Docker Hub), and then pull that image to each engine that needs to run it.

For more details on the layered filesystem, see https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/

about 4 years ago · Santiago Trujillo Report

0

You can also work a little, in order to create smaller images. You can use Alpine or Busybox instead of using bigger Ubuntu, Debian or Bitnami (Debian light).

A smaller image is more secure as less tools are available.

Some reading

http://blog.xebia.com/how-to-create-the-smallest-possible-docker-container-of-any-image/

https://www.dajobe.org/blog/2015/04/18/making-debian-docker-images-smaller/

You have 2 great tools in order to make smaller docker images

https://github.com/docker-slim/docker-slim

and

https://github.com/mvanholsteijn/strip-docker-image

Some examples with docker-slim

https://hub.docker.com/r/k3ck3c/grafana-xxl.slim/

shows

size before -> 357.3 MB

and using docker-slim -> 18.73 MB

or about simh

https://hub.docker.com/r/k3ck3c/simh_bitnami.slim/

size 5.388 MB

when the original

k3ck3c/simh_bitnami 88.86 MB

a popular netcat image

chilcano/netcat is 135.2 MB

when a netcat based on Alpine is 7.812 MB

and based on busybox will need 2 or 3 MB

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!