Create Docker Image From Running Container
While working with containers, we keep doing installations and other changes to make our application work. And once we are done, we want to take an image. So in this guide, we will see how to take an image from a running container.
docker container commit
This command is used to take an image of a running container. When the image is taken, all the processes are paused so that the image does not encounter any problems once it is used to create one more container.
Syntax
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Options
--author, -a: Author
--change, -c: Apply Dockerfile instruction to the created image
--message, -m: Commit message
--pause, -p: Pause container during commit
Example
Let's create a container first-
learning-ocean:~ gaurav$ docker container run -it ubuntu:14.04 /bin/bash
root@1b2f7e840cf3:/# cd /tmp
Create few files in the the containers filesystem-
root@1b2f7e840cf3:/# touch 1 2 3 4 5 6 7 8 9
root@1b2f7e840cf3:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@1b2f7e840cf3:/# cd /tmp
root@1b2f7e840cf3:/tmp# ls
1 2 3 4 5 6 7 8 9
root@1b2f7e840cf3:/tmp#
come out from container using CTRL+pq
Now let's list the containers-
learning-ocean:~ gaurav$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1b2f7e840cf3 ubuntu:14.04 "/bin/bash" 2 minutes ago Up 2 minutes hungry_hermann
learning-ocean:~ gaurav$
Finally creating the image using the commit command-
learning-ocean:~ gaurav$ docker container commit 1b2f7e840cf3 newubuntu
Now listing the image -
learning-ocean:~ gaurav$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
newubuntu latest f74a9dbd167e 4 seconds ago 197MB
ubuntu 14.04 13b66b487594 3 months ago 197MB
Now let's try creating the container from this newly created image again and check if the file we created exists or not.
learning-ocean:~ gaurav$ docker container run -it newubuntu bash
root@91d9dc9e566d:/# cd /tmp
root@91d9dc9e566d:/tmp# cd ..
root@91d9dc9e566d:/tmp# ls
1 2 3 4 5 6 7 8 9
root@91d9dc9e566d:/#