2016-09-18 40 views
-2

需要:我想在ubuntu14.04上創建最小尺寸的python docker圖像。Docker Image Size a Concern - 使用ubuntu創建基本python圖像的最佳實踐

問題: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/??_* 
+0

使用Alpine Linux代替Ubuntu;不要在容器上安裝vim curl和wget。 –

+0

@rob是從ubuntu14.04製造的高山?想使用我們在prod中使用的相同的東西... vim捲曲和wget佔用300MB? –

+0

這是一個不同的Linux發行版,但它專門設計爲輕量級。打開https://alpinelinux.org/瞭解更多信息。與你的操作人員交談,他們應該對結果留下深刻的印象。 –

回答

1

這裏沒有完美的答案。

將Ubuntu用作基礎映像是一個很好的開始,尤其是對於希望部署到需要模擬虛擬機的環境中的傳統應用程序。我建議不要讓這個驅動器做出所有決策,因爲容器不是虛擬機。他們都共享主機的內核。正如@RobKielty所說的「Linux是Linux」。

事實是,如果您的應用程序具有很少的依賴性(例如去程序),那麼基本映像的額外大小就是冗餘。像Alpine這樣的替代基礎圖像的使用是由更快的下載需求驅動的,但它也具有安全優勢。它消除了可能需要修補的未使用的軟件包。然而...這不是免費的午餐,因爲使用Alpine意味着更多的努力安裝依賴關係(這將已經存在於像Ubuntu這樣的更大的圖像中)

總之我會引用你的社區python圖像。如果仔細觀察,可以使用幾種可用的圖像標籤,使用基於各種基本圖像構建的python。可以爲你節省很多的努力。

https://hub.docker.com/_/python/

希望這會有所幫助。