如何调查Ubuntu的两个Docker镜像之间的差异?

时间:2017-04-11 09:48:46

标签: ubuntu docker

Ubuntu 14.04的docker镜像尺寸更大,并且有lsb_release命令。

$ docker run -it ubuntu:14.04
root@c0384d45aba3:/# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:    14.04
Codename:   trusty
root@c0384d45aba3:/# exit
exit
$ docker images ubuntu:14.04
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               7c09e61e9035        6 weeks ago         188 MB

Ubuntu 16.04的泊坞窗图片尺寸较小,没有 lsb_release命令。

$ docker run -it ubuntu:16.04
root@853f2dd91c36:/# lsb_release -a
bash: lsb_release: command not found
root@853f2dd91c36:/# exit
exit
$ docker images ubuntu:16.04
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               0ef2e08ed3fa        6 weeks ago         130 MB

从他们的Dockerfiles开始,我怎样才能找到造成这种差异的原因?

1 个答案:

答案 0 :(得分:3)

以下是两张图片的Dockerfiles。

以下是这两个文件之间的唯一区别。

-ADD ubuntu-trusty-core-cloudimg-amd64-root.tar.gz /
+ADD ubuntu-xenial-core-cloudimg-amd64-root.tar.gz /

现在我们从

下载两个.tar.gz文件

实际上lsb_release包含在可靠但不包含在xenial中。

$ tar -tf ubuntu-trusty-core-cloudimg-amd64-root.tar.gz | grep lsb_release$
usr/bin/lsb_release
$ tar -tf ubuntu-xenial-core-cloudimg-amd64-root.tar.gz | grep lsb_release$
$

然后我们将两个tarball的内容提取到目录中,我们可以确认trusty比xenial大。

$ mkdir trusty xenial
$ tar -xf ubuntu-trusty-core-cloudimg-amd64-root.tar.gz -C trusty
$ tar -xf ubuntu-xenial-core-cloudimg-amd64-root.tar.gz -C xenial
$ du -sh trusty xenial
208M    trusty
141M    xenial