我想開始編寫Docker鏡像。我有一個.net Core 2.0 Web Api服務,我已經部署到Amazon Linux機器上。它運行良好,但我想稍微自動化構建和部署過程。當我的主機擁有我需要安裝的所有軟件時,爲什麼要將Linux發行版作爲Dockerfile庫提供?
就我而言,沒有必要爲我需要建立的圖像父圖像。我可能會從某個位置抓取一些文件,運行一些dotnet CLI命令,然後使用Apache作爲反向代理運行該服務。我真的沒有看到任何一個父圖像的需要。
我在問這個問題,因爲我見過的大多數例子都包含一個基礎圖像。大多數情況下,它的東西非常通用,比如「From Ubuntu」。我讀過大部分圖像都會包含父圖像。根據Docker的文檔:
父圖像是您的圖像所基於的圖像。它引用Dockerfile中FROM指令的內容。 Dockerfile中的每個後續聲明都會修改此父圖像。大多數Dockerfiles從父映像開始,而不是基本映像。但是,這些術語有時可以互換使用。
究竟是從Ubuntu繼承的重點?即使Docker文檔也建議使用Debian,「因爲它的控制非常嚴格,並且保持最低限度」。這是否確保您的Linux機器具有Ubuntu發行版?如果我使用亞馬遜Linux,但使用Debian映像作爲我的基礎,這是否甚至重要?
你希望從哪裏得到*任何軟件*如果你不是來自發行版?假設您正在運行Apache HTTPD。你需要實際上有一個libc鏈接到一個OpenSSL的副本。哎呀,如果你沒有'apt-get'(或'yum'或其他軟件包管理器)和你的發行版提供的所有東西,你不能'apt-get install apache'。 –
......最接近你可以得到的不是擁有一個發行版就像[Buildroot](https://buildroot.org/),甚至這仍然是一個發行版(只有一個,在編譯時,根據您的規格構建一切,不涉及二進制包)。 –
(好吧 - [從Scratch的Linux](http://www.linuxfromscratch.org/lfs/),但如果你想知道什麼是使用真正的發行版,而不是嘗試使用它。良好的學習經驗,但不能幫助你完成實際工作)。 –