Dolby JSon
Dolby JSon

Reputation: 11

the approach to restore a pre-configured docker image

I am completely new to docker. I have a quick question about docker images.

Assume that I have setup a local docker image with certain software / server installed. So now I would need to set a checkpoint / snapshot here, then all the work done after this checkpoint is temporary; which means at a certain time, I would restore the original image (from that checkpoint) and overwrite everything in the temporary image.

My first question is if the above use-case make sense?
My second question, if the above make sense, what is the approach in doing that checkpoint (simply how, as I am keeping the checkpoint image in local diskspace only, no cloud repos involved) and how to restore the images to overwrite everything in the temporary image when needed.

Though I have read a bit of docker documentation, but am still struggling in the conceptual things.

Upvotes: 1

Views: 127

Answers (2)

Here_2_learn
Here_2_learn

Reputation: 5451

As far as I know there is nothing like checkpoint or so with respect to Docker. But you can save the actions performed on the container as Images to create a new Image.

Giving an example to have better understanding:

Lets run a container using an base Ubuntu Image and create a folder inside the container:

#docker run -it ubuntu:14.04 /bin/bash
root@58246867493d:/# 
root@58246867493d:/# cd /root
root@58246867493d:~# ls
root@58246867493d:~# mkdir TEST_DIR
root@58246867493d:~# exit

Status of the exited container:

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
58246867493d        ubuntu:14.04        "/bin/bash"         2 minutes ago       Exited (127) 57 seconds ago                       hungry_turing

Now you can commit the changes so that the container will be saved into a new Docker Image:

#docker commit 58246867493d ubuntu:15.0       

Get docker Images

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
**ubuntu              15.0                acac1f3733b2        10 seconds ago      188MB**
ubuntu              14.04               132b7427a3b4        10 hours ago        188MB

Run the newly build Image to see the changes committed in the previous container.

# docker run -it ubuntu:15.0 /bin/bash
root@3a48af5eaec9:/# cd /root/
root@3a48af5eaec9:~# ls
TEST_DIR
root@3a48af5eaec9:~# exit

As you have asked, any further changes you do on this container either can be committed to form a new Image or can be ignored .

Hope it helps.

Upvotes: 0

VonC
VonC

Reputation: 1325407

It makes sense even though you could consider managing data in container or volume (or host folder mounted in the container).
That way the data remains persistent even when you stop and restart the container.

what is the approach in doing that checkpoint

If your container does not mount a volume, and has its data inside, then yes, stopping and removing a container will lose that data.

One possibility is to create that snapshot with docker commit.
That will freeze the container state as a new image, that you can run later.

Example:

$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS              NAMES
c3f279d17e0a        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours                            desperate_dubinsky
197387f1b436        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours                            focused_hamilton

$ docker commit c3f279d17e0a  svendowideit/testimage:version3

f5283438590d

$ docker images

REPOSITORY                        TAG                 ID                  CREATED             SIZE
svendowideit/testimage            version3            f5283438590d        16 seconds ago      335.7 MB

Upvotes: 1

Related Questions