Ubuntu14.04与Ubuntu12.04 docker图像

Ubuntu14.04与Ubuntu12.04 docker图像,docker,Docker,我有一些基于ubuntu12.04图像的docker图像。我想基于ubuntu14.04将其中一些迁移到。但ubuntu14.04映像比ubuntu12.04映像大120 MB 任何人都知道为什么以及如何减少ubuntu14.04映像 运行docker图像 myregistry/ubuntu 14.04 xxx xxx 225.4 MB myregistry/ubuntu 12.04 xxx xxx 103.9

我有一些基于ubuntu12.04图像的docker图像。我想基于ubuntu14.04将其中一些迁移到。但ubuntu14.04映像比ubuntu12.04映像大120 MB

任何人都知道为什么以及如何减少ubuntu14.04映像

运行
docker图像

myregistry/ubuntu          14.04    xxx   xxx        225.4 MB
myregistry/ubuntu          12.04    xxx   xxx        103.9 MB

我看到的第一个问题是,你没有向我们展示你是如何获得你所拥有的图像的。它们来自非根注册表(“myregistry”),您在复制/粘贴练习中省略了哈希

当我下载这些图片时,我看到的是:

WineSoaked$ docker pull ubuntu:12.04
Pulling repository ubuntu
b45a6cbea6d1: Download complete
511136ea3c5a: Download complete
0b825e3a3d82: Download complete
3327dfd9dc7d: Download complete
4e284c9e0a9e: Download complete
ae9570f7a92a: Download complete
acc75c8f0e1d: Download complete

WineSoaked$ docker pull ubuntu:14.04
Pulling repository ubuntu
6b4e8a7373fe: Download complete
511136ea3c5a: Download complete
b18d0a2076a1: Download complete
67b66f26d423: Download complete
25c4824a5268: Download complete
8b1c48305638: Download complete
c900195dcbf3: Download complete

WineSoaked$ docker images
REPOSITORY      TAG             IMAGE ID        CREATED         VIRTUAL SIZE
ubuntu          14.04           6b4e8a7373fe    6 days ago      194.9 MB
ubuntu          12.04           b45a6cbea6d1    6 days ago      112.3 MB
您会注意到,每个拉取中的第二个散列是相同的。这就是它们的基础图像。其余部分与用于构建它们的DockerFile有关。我们去看看,好吗

以下是12.04的版本:

FROM scratch
ADD precise-core-amd64.tar.gz /

# a few minor docker-specific tweaks
# see https://github.com/dotcloud/docker/blob/master/contrib/mkimage/debootstrap
RUN echo '#!/bin/sh' > /usr/sbin/policy-rc.d \
    && echo 'exit 101' >> /usr/sbin/policy-rc.d \
    && chmod +x /usr/sbin/policy-rc.d \
    \
    && dpkg-divert --local --rename --add /sbin/initctl \
    && cp -a /usr/sbin/policy-rc.d /sbin/initctl \
    && sed -i 's/^exit.*/exit 0/' /sbin/initctl \
    \
    && echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \
    \
    && echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb    /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean \
    && echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean \
    && echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean \
    \
    && echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages \
    \
    && echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes

# delete all the apt list files since they're big and get stale quickly
RUN rm -rf /var/lib/apt/lists/*
# this forces "apt-get update" in dependent images, which is also good

# enable the universe
RUN sed -i 's/^#\s*\(deb.*universe\)$/\1/g' /etc/apt/sources.list

# upgrade packages for now, since the tarballs aren't updated frequently enough
RUN apt-get update && apt-get dist-upgrade -y && rm -rf /var/lib/apt/lists/*

# overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]
Dockerfile中的每个命令都对应于一个散列,散列是组成AUFS文件系统的中间映像。也就是说:

  • 511136ea3c5a对应于从头开始的
  • 0b825e3a3d82对应于
    ADD-precise-core-amd64.tar.gz
  • 3327dfd9dc7d与史诗般的长距离
    运行配合使用
  • 4e284c9e0a9e使用
    运行rm-rf/var/lib/apt/lists/*
  • ae9570f7a92a支持
    运行sed-i的/^\s*\(deb.*universe\)$/\1/g'/etc/apt/sources。列表
  • acc75c8f0e1d与
    运行apt-get-update和apt-get-dist-upgrade-y和&rm-rf/var/lib/apt/lists/*
    b45a6cbea6d1对应于结果图像
您也可以根据14.04图像的以下内容对其进行类似的分解:

所以,看看Dockerfile,我认为14.04更大的主要原因是它们开始的基础tarball更大。12.04的内存约为39MB,而14.04的内存约为66MB。你可以下载并压缩它们以获得它们的真实尺寸,但我认为这会让你开始理解它们

这可以使用以下命令进行确认:


我看到的第一个问题是,你没有向我们展示你是如何获得你所拥有的图像的。它们来自非根注册表(“myregistry”),您在复制/粘贴练习中省略了哈希

当我下载这些图片时,我看到的是:

WineSoaked$ docker pull ubuntu:12.04
Pulling repository ubuntu
b45a6cbea6d1: Download complete
511136ea3c5a: Download complete
0b825e3a3d82: Download complete
3327dfd9dc7d: Download complete
4e284c9e0a9e: Download complete
ae9570f7a92a: Download complete
acc75c8f0e1d: Download complete

WineSoaked$ docker pull ubuntu:14.04
Pulling repository ubuntu
6b4e8a7373fe: Download complete
511136ea3c5a: Download complete
b18d0a2076a1: Download complete
67b66f26d423: Download complete
25c4824a5268: Download complete
8b1c48305638: Download complete
c900195dcbf3: Download complete

WineSoaked$ docker images
REPOSITORY      TAG             IMAGE ID        CREATED         VIRTUAL SIZE
ubuntu          14.04           6b4e8a7373fe    6 days ago      194.9 MB
ubuntu          12.04           b45a6cbea6d1    6 days ago      112.3 MB
您会注意到,每个拉取中的第二个散列是相同的。这就是它们的基础图像。其余部分与用于构建它们的DockerFile有关。我们去看看,好吗

以下是12.04的版本:

FROM scratch
ADD precise-core-amd64.tar.gz /

# a few minor docker-specific tweaks
# see https://github.com/dotcloud/docker/blob/master/contrib/mkimage/debootstrap
RUN echo '#!/bin/sh' > /usr/sbin/policy-rc.d \
    && echo 'exit 101' >> /usr/sbin/policy-rc.d \
    && chmod +x /usr/sbin/policy-rc.d \
    \
    && dpkg-divert --local --rename --add /sbin/initctl \
    && cp -a /usr/sbin/policy-rc.d /sbin/initctl \
    && sed -i 's/^exit.*/exit 0/' /sbin/initctl \
    \
    && echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \
    \
    && echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb    /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean \
    && echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean \
    && echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean \
    \
    && echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages \
    \
    && echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes

# delete all the apt list files since they're big and get stale quickly
RUN rm -rf /var/lib/apt/lists/*
# this forces "apt-get update" in dependent images, which is also good

# enable the universe
RUN sed -i 's/^#\s*\(deb.*universe\)$/\1/g' /etc/apt/sources.list

# upgrade packages for now, since the tarballs aren't updated frequently enough
RUN apt-get update && apt-get dist-upgrade -y && rm -rf /var/lib/apt/lists/*

# overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]
Dockerfile中的每个命令都对应于一个散列,散列是组成AUFS文件系统的中间映像。也就是说:

  • 511136ea3c5a对应于从头开始的
  • 0b825e3a3d82对应于
    ADD-precise-core-amd64.tar.gz
  • 3327dfd9dc7d与史诗般的长距离
    运行配合使用
  • 4e284c9e0a9e使用
    运行rm-rf/var/lib/apt/lists/*
  • ae9570f7a92a支持
    运行sed-i的/^\s*\(deb.*universe\)$/\1/g'/etc/apt/sources。列表
  • acc75c8f0e1d与
    运行apt-get-update和apt-get-dist-upgrade-y和&rm-rf/var/lib/apt/lists/*
    b45a6cbea6d1对应于结果图像
您也可以根据14.04图像的以下内容对其进行类似的分解:

所以,看看Dockerfile,我认为14.04更大的主要原因是它们开始的基础tarball更大。12.04的内存约为39MB,而14.04的内存约为66MB。你可以下载并压缩它们以获得它们的真实尺寸,但我认为这会让你开始理解它们

这可以使用以下命令进行确认:


我看到的第一个问题是,你没有向我们展示你是如何获得你所拥有的图像的。它们来自非根注册表(“myregistry”),您在复制/粘贴练习中省略了哈希

当我下载这些图片时,我看到的是:

WineSoaked$ docker pull ubuntu:12.04
Pulling repository ubuntu
b45a6cbea6d1: Download complete
511136ea3c5a: Download complete
0b825e3a3d82: Download complete
3327dfd9dc7d: Download complete
4e284c9e0a9e: Download complete
ae9570f7a92a: Download complete
acc75c8f0e1d: Download complete

WineSoaked$ docker pull ubuntu:14.04
Pulling repository ubuntu
6b4e8a7373fe: Download complete
511136ea3c5a: Download complete
b18d0a2076a1: Download complete
67b66f26d423: Download complete
25c4824a5268: Download complete
8b1c48305638: Download complete
c900195dcbf3: Download complete

WineSoaked$ docker images
REPOSITORY      TAG             IMAGE ID        CREATED         VIRTUAL SIZE
ubuntu          14.04           6b4e8a7373fe    6 days ago      194.9 MB
ubuntu          12.04           b45a6cbea6d1    6 days ago      112.3 MB
您会注意到,每个拉取中的第二个散列是相同的。这就是它们的基础图像。其余部分与用于构建它们的DockerFile有关。我们去看看,好吗

以下是12.04的版本:

FROM scratch
ADD precise-core-amd64.tar.gz /

# a few minor docker-specific tweaks
# see https://github.com/dotcloud/docker/blob/master/contrib/mkimage/debootstrap
RUN echo '#!/bin/sh' > /usr/sbin/policy-rc.d \
    && echo 'exit 101' >> /usr/sbin/policy-rc.d \
    && chmod +x /usr/sbin/policy-rc.d \
    \
    && dpkg-divert --local --rename --add /sbin/initctl \
    && cp -a /usr/sbin/policy-rc.d /sbin/initctl \
    && sed -i 's/^exit.*/exit 0/' /sbin/initctl \
    \
    && echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \
    \
    && echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb    /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean \
    && echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean \
    && echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean \
    \
    && echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages \
    \
    && echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes

# delete all the apt list files since they're big and get stale quickly
RUN rm -rf /var/lib/apt/lists/*
# this forces "apt-get update" in dependent images, which is also good

# enable the universe
RUN sed -i 's/^#\s*\(deb.*universe\)$/\1/g' /etc/apt/sources.list

# upgrade packages for now, since the tarballs aren't updated frequently enough
RUN apt-get update && apt-get dist-upgrade -y && rm -rf /var/lib/apt/lists/*

# overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]
Dockerfile中的每个命令都对应于一个散列,散列是组成AUFS文件系统的中间映像。也就是说:

  • 511136ea3c5a对应于从头开始的
  • 0b825e3a3d82对应于
    ADD-precise-core-amd64.tar.gz
  • 3327dfd9dc7d与史诗般的长距离
    运行配合使用
  • 4e284c9e0a9e使用
    运行rm-rf/var/lib/apt/lists/*
  • ae9570f7a92a支持
    运行sed-i的/^\s*\(deb.*universe\)$/\1/g'/etc/apt/sources。列表
  • acc75c8f0e1d与
    运行apt-get-update和apt-get-dist-upgrade-y和&rm-rf/var/lib/apt/lists/*
    b45a6cbea6d1对应于结果图像
您也可以根据14.04图像的以下内容对其进行类似的分解:

所以,看看Dockerfile,我认为14.04更大的主要原因是它们开始的基础tarball更大。12.04的内存约为39MB,而14.04的内存约为66MB。你可以下载并压缩它们以获得它们的真实尺寸,但我认为这会让你开始理解它们

这可以使用以下命令进行确认:


我看到的第一个问题是,你没有向我们展示你是如何获得你所拥有的图像的。它们来自非根注册表(“myregistry”),您在复制/粘贴练习中省略了哈希

当我下载这些图片时,我看到的是:

WineSoaked$ docker pull ubuntu:12.04
Pulling repository ubuntu
b45a6cbea6d1: Download complete
511136ea3c5a: Download complete
0b825e3a3d82: Download complete
3327dfd9dc7d: Download complete
4e284c9e0a9e: Download complete
ae9570f7a92a: Download complete
acc75c8f0e1d: Download complete

WineSoaked$ docker pull ubuntu:14.04
Pulling repository ubuntu
6b4e8a7373fe: Download complete
511136ea3c5a: Download complete
b18d0a2076a1: Download complete
67b66f26d423: Download complete
25c4824a5268: Download complete
8b1c48305638: Download complete
c900195dcbf3: Download complete

WineSoaked$ docker images
REPOSITORY      TAG             IMAGE ID        CREATED         VIRTUAL SIZE
ubuntu          14.04           6b4e8a7373fe    6 days ago      194.9 MB
ubuntu          12.04           b45a6cbea6d1    6 days ago      112.3 MB
您会注意到,每个拉取中的第二个散列是相同的。这就是它们的基础图像。其余部分与用于构建它们的DockerFile有关。我们去看看,好吗

以下是12.04的版本:

FROM scratch
ADD precise-core-amd64.tar.gz /

# a few minor docker-specific tweaks
# see https://github.com/dotcloud/docker/blob/master/contrib/mkimage/debootstrap
RUN echo '#!/bin/sh' > /usr/sbin/policy-rc.d \
    && echo 'exit 101' >> /usr/sbin/policy-rc.d \
    && chmod +x /usr/sbin/policy-rc.d \
    \
    && dpkg-divert --local --rename --add /sbin/initctl \
    && cp -a /usr/sbin/policy-rc.d /sbin/initctl \
    && sed -i 's/^exit.*/exit 0/' /sbin/initctl \
    \
    && echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \
    \
    && echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb    /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean \
    && echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean \
    && echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean \
    \
    && echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages \
    \
    && echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes

# delete all the apt list files since they're big and get stale quickly
RUN rm -rf /var/lib/apt/lists/*
# this forces "apt-get update" in dependent images, which is also good

# enable the universe
RUN sed -i 's/^#\s*\(deb.*universe\)$/\1/g' /etc/apt/sources.list

# upgrade packages for now, since the tarballs aren't updated frequently enough
RUN apt-get update && apt-get dist-upgrade -y && rm -rf /var/lib/apt/lists/*

# overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]
每个公司