Docker图像大小问题-使用ubuntu创建基本python图像的最佳实践

Docker图像大小问题-使用ubuntu创建基本python图像的最佳实践,python,image,ubuntu,docker,Python,Image,Ubuntu,Docker,需要:我想在ubuntu14.04之上创建一个最小大小的python docker映像 问题:Ubuntu docker 14.04图像大小为188MB。使用下面的Dockerfile创建图像时,图像大小将变为486MB。这对于这么小的一个添加来说太多了。我知道指令的数量越少,图像的大小就越小。所以我把它保持在最低限度 我做错了什么??为python创建轻型dockerimage的最佳方法是什么 FROM ubuntu:14.04 RUN apt-get update && ap

需要:我想在ubuntu14.04之上创建一个最小大小的python docker映像

问题:Ubuntu docker 14.04图像大小为188MB。使用下面的Dockerfile创建图像时,图像大小将变为486MB。这对于这么小的一个添加来说太多了。我知道指令的数量越少,图像的大小就越小。所以我把它保持在最低限度

我做错了什么??为python创建轻型dockerimage的最佳方法是什么

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y -q curl \
build-essential \
python-dev \
python-pip \
vim \
wget && \
apt-get autoremove -y && \
apt-get clean && \
apt-get autoclean && \
echo -n > /var/lib/apt/extended_states && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /usr/share/man/?? && \
rm -rf /usr/share/man/??_*

这里没有完美的答案

使用Ubuntu作为基础映像是一个很好的起点,特别是对于希望部署到需要模拟虚拟机的环境中的遗留应用程序。我建议不要让这一点驱动您的所有决策,因为容器不是虚拟机。它们都共享主机的内核。正如@RobKielty所说,“Linux就是Linux”

事实上,如果您的应用程序只有很少的依赖项(例如go程序),那么基础映像的额外大小就是冗余。使用阿尔卑斯山(Alpine)等备选基础图像是出于对更快下载的渴望,但它也有安全方面的好处。它消除了需要修补的未使用的包。然而。。。这不是一顿免费的午餐,因为使用Alpine意味着要花更多的精力安装依赖项(这在Ubuntu这样的大图像中已经存在了)

最后,我建议您参考社区python映像。如果仔细看,有几个可用的图像标记,它们使用python构建在各种基本图像之上。可能会帮你省很多力气


希望这有帮助。

使用Alpine Linux而不是Ubuntu;不要在容器上安装vim curl和wget。@rob是由ubuntu14.04制成的吗?想要使用我们在产品中使用的相同东西。。。vim curl和wget是否占用了300MB的空间?这是一个不同的Linux发行版,但它是专门为轻量级而设计的。拍摄以了解更多信息。与您的ops人员交谈,他们应该对结果印象深刻。@RobKielty对于希望将其当前infra移动到docker的人员如何?他们已经使用ubuntu很多年了。转向全新的linux发行版是一个适合所有人的解决方案。你说呢?@RobKielty和去除卷曲wget和vim并没有使尺寸显著减小。它仍然是378MB:(