不包含套件管理器的 Docker 映像

不包含套件管理器的 Docker 映像

我通常將 docker 容器視為可執行進程,它攜帶一些“環境”,因此不需要在 docker 主機上安裝任何內容。例如,一個 java jar 和一個 jre。

為了安裝 jre,我們可以從 ubuntu 基礎盒子開始,然後使用 aptitude 來安裝它。然而,儘管我們實際上需要一個套件管理器來為我們的應用程式配置依賴項(在本例中為 jre),但我認為執行我們的應用程式並不嚴格需要它。

這就提出了一個問題,這個問題太過遙遠,無法引起實際關注,但仍然是一個好奇心:在 docker 映像中安裝依賴項是否可行,而不在建置的映像中包含套件管理器?

看看如何為 chroot 實現這一點,這似乎很難或不可能。從表面上看,這個挑戰似乎是可以解決的(例如,如果我使用 gradle 或 maven 構建一個 java 應用程序,我不必在發布的程序中包含 gradle 或 maven 二進位文件),所以我也很好奇知道為什麼它似乎沒有簡單的解決方案。是否有人正在解決將相依性安裝到 docker 映像(或 chroot,就此而言)的問題?如果沒有,為什麼不呢?

(解決方案這裡和解決方案 2 來自這裡需要將套件管理器安裝到 chroot 中,這並沒有解決我如何將套件管理器從 docker 映像中取出的問題。第二個解決方案 1 涉及從原始碼建置(我認為?),這也不完全是我正在尋找的)。

相關內容