Docker Commit on a existing image

Viewed 17712

docker commit creates a new image every time the commit command is issued. Is it possible to issue commit on currently running container and the changes get saved to the existing image? (existing image here is the image from which the container was spawned). This way no new image would be created everytime I execute commit.

3 Answers

Docker images are immutable, below text from the documentation:

The Docker image is read-only. When Docker runs a container from an image, it adds a read-write layer on top of the image (using a UnionFS) in which your application runs.

Hence suggestion given by @hurturk is going to create a new image and not what is asked in the question.

To create a new image from changes to a container, it’s a simple as running just one command. Before we do so, however, let’s change the container!

Within this container we are free to do anything we would typically do on Fedora. In this case, we’re going to install Git and then commit the container. The linked instructions are for installing Git on CentOS 6, but they’ll work for this Fedora container too.

Once you’ve completed those instructions you can disconnect, or detach, from the shell without exiting use the escape sequence Ctrl-p + Ctrl-q.

Finally it’s time to commit our changes to a named image. This command converts the container 9c09acd48a25 to an image with the name fedora-base-with-git:

docker commit 9c09acd48a25 fedora-base-with-git

Docker uses the “commits are cheap” concept in its design. You’re encouraged to commit frequently and at any point in an image’s history, much like version control.

Related