Search code examples
linuxbashdockerfedora

Why the virtual size still the same after delete a file from container with rm?


I would like to know more about Docker. I'm so beginner, very new with this and linux. My English is not perfect therefore I copied the Terminal output. I had an image with 516MB VIRTUAL SIZE. I started the bash in a container and i use wget to download some 26MB data into this. After the downloading I create a image from the container's changes with commit. After that the VIRTUAL SIZE was 542.5MB. That is correct. After the commit I started again the bash, and I deleted this file. When i committed the changes the image VIRTUAL SIZE was 542.8MB.

This size does not decreased, instead increased. Could you tell me the reason?

Local images:

[fedora_user@fedora-vm ~]$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
tester/mytestfedora   latest              c0ca83567bdd        4 seconds ago       516 MB
fedora                 latest              834629358fe2        3 months ago        241.3 MB

Using the smallest one and downloading a file:

[fedora_user@fedora-vm ~]$ docker run -i -t tester/mytestfedora /bin/bash
bash-4.3# su dockeres
[dockeres@05ef6e284e32 /]$ cd /home/dockeres/downloads/    
[dockeres@05ef6e284e32 downloads]$ wget https://dl.dropboxusercontent.com/u/827503/0_TEMP/Riverbed.zip
--2015-03-31 19:24:47--  https://dl.dropboxusercontent.com/u/827503/0_TEMP/Riverbed.zip
Resolving dl.dropboxusercontent.com (dl.dropboxusercontent.com)... 54.243.97.104, 54.243.80.193, 50.16.185.28, ...
Connecting to dl.dropboxusercontent.com (dl.dropboxusercontent.com)|54.243.97.104|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 26177252 (25M) [application/zip]
Saving to: 'Riverbed.zip'
Riverbed.zip                      100%[==============================================================>]  24.96M  3.66MB/s   in 14s    
2015-03-31 19:25:03 (1.78 MB/s) - 'Riverbed.zip' saved [26177252/26177252]
[dockeres@05ef6e284e32 downloads]$ exit
bash-4.3# exit

List the active ones and create a new image from a container's changes:

[fedora_user@fedora-vm ~]$ docker ps -all
CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS                     PORTS               NAMES
05ef6e284e32        tester/mytestfedora:latest   "/bin/bash"         2 minutes ago       Exited (0) 6 seconds ago                       sick_einstein       
[fedora_user@fedora-vm ~]$ docker commit 05ef6e284e32 tester/mytestfedora
f122b12e94a32d477f2f2f18c5a5190a9ad5d349109933da65a0cfeff448c822
[fedora_user@fedora-vm ~]$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
tester/mytestfedora   latest              f122b12e94a3        5 seconds ago       542.5 MB
fedora                 latest              834629358fe2        3 months ago        241.3 MB

Access it again and remove the downloaded file:

[fedora_user@fedora-vm ~]$ docker run -i -t tester/mytestfedora /bin/bash
[dockeres@fb5ba36692f0 /]$ cd /home/dockeres/downloads/             
[dockeres@fb5ba36692f0 downloads]$ rm -f Riverbed.zip              
[dockeres@fb5ba36692f0 downloads]$ ls
[dockeres@fb5ba36692f0 downloads]$ exit
bash-4.3# exit

List the active ones again and create a new image from a container's changes:

[fedora_user@fedora-vm ~]$ docker ps -all
CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS                     PORTS               NAMES
fb5ba36692f0        tester/mytestfedora:latest   "/bin/bash"         51 seconds ago      Exited (0) 5 seconds ago                       goofy_yalow         
[fedora_user@fedora-vm ~]$ docker commit fb5ba36692f0 tester/mytestfedora
f744e248576d7fa434768a1e1d25625a9654020fe77e12306f304ff5d5ad3e3b
[fedora_user@fedora-vm ~]$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
tester/mytestfedora   latest              f744e248576d        3 seconds ago       542.8 MB
fedora                 latest              834629358fe2        3 months ago        241.3 MB

Thank you in advance for any help you can provide.

Ed


Solution

  • Answer on comment, as it too big for comment.

    Single command

    FROM ubuntu
    
    RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections \
     && apt-get -qq update \
     && apt-get -qq -y install wget unzip \
     && mkdir /usr/etc \
     && cd /usr/etc \
     && wget -nv -O /tmp/jboss.zip http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.zip \
     && unzip /tmp/jboss.zip \
     && apt-get clean \
     && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
    

    Smaller file:

    $ docker build -t test1 .
    $ docker images | grep test1
    test1 356 MB
    

    Separate commands:

    FROM ubuntu
    
    RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && apt-get -qq update && apt-get -qq -y install wget unzip
    RUN wget -nv -O /tmp/jboss.zip http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.zip
    RUN mkdir /usr/etc
    RUN cd /usr/etc && unzip /tmp/jboss.zip
    RUN apt-get clean
    RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
    

    Bigger image:

    $ docker build -t test2 .
    $ docker images | grep test2
    test2 510 MB