Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker dealing with images instead of Dockerfiles

Tags:

docker

Can someone explain to me why the normal Docker process is to build an image from a Dockerfile and then upload it to a repository, instead of just moving the Dockerfile to and from the repository?

Let's say we have a development laptop and a test server with Docker.

If we build the image, that means uploading and downloading all of the packages inside the Dockerfile. Sometimes this can be very large (e.g. PyTorch > 500MB).

Instead of transporting the large imagefile to and from the server, doesn't it make sense to, perhaps compile the image locally to verify it works, but mostly transport the small Dockerfile and build the image on the server?

like image 434
user3180 Avatar asked Oct 28 '25 09:10

user3180


1 Answers

This started out as a comment, but it got too long. It is likely to not be a comprehensive answer, but may contain useful information regardless.


Often the Dockerfile will form part of a larger build process, with output files from previous stages being copied into the final image. If you want to host the Dockerfile instead of the final image, you’d also have to host either the (usually temporary) processed files or the entire source repo & build script.

The latter is often done for open source projects, but for convenience pre-built Docker images are also frequently available.

One tidy solution to this problem is to write the entire build process in the Dockerfile using multi-stage builds (introduced in Docker CE 17.05 & EE 17.06). But even with the complete build process described in a platform-independent manner in a single Dockerfile, the complete source repository must still be provided.

TL,DR: Think of a Docker image as a regular binary. It’s convenient to download and install without messing around with source files. You could download the source for a C application and build it using the provided Makefile, but why would you if a binary was made available for your system?

like image 173
MTCoster Avatar answered Oct 31 '25 02:10

MTCoster