我是碼頭工人,試圖理解基本圖像的概念。以Ubuntu爲基礎映像的Docker應用程序如何在Windows上運行?
比方說,我有一個hello-world碼頭應用程序在Windows機器上與ubuntu作爲基礎鏡像在Dockerfile中。
現在運行這個hello-world應用程序,docker是否會安裝整個ubuntu來運行應用程序?
如果沒有,那麼在這裏將如何使用ubuntu的基礎鏡像以及Docker容器如何促進基於ubuntu的應用程序和windows操作系統之間的交換?
我是碼頭工人,試圖理解基本圖像的概念。以Ubuntu爲基礎映像的Docker應用程序如何在Windows上運行?
比方說,我有一個hello-world碼頭應用程序在Windows機器上與ubuntu作爲基礎鏡像在Dockerfile中。
現在運行這個hello-world應用程序,docker是否會安裝整個ubuntu來運行應用程序?
如果沒有,那麼在這裏將如何使用ubuntu的基礎鏡像以及Docker容器如何促進基於ubuntu的應用程序和windows操作系統之間的交換?
現在運行這個hello-world應用程序,docker是否會安裝整個ubuntu來運行應用程序?
不,使用的ubuntu image不是「整個ubuntu」。它是一個向下傾斜的版本,沒有全部的X11圖形層。儘管如此,仍然是180 MB:請參閱「Docker Base Image OS Size Comparison」。
這些天來,你寧願使用一個Alpine image(5 MB):請參閱 「Docker Official Images are Moving to Alpine Linux」
關於hello-world application specifically,沒有Ubuntu或者阿爾卑斯參與。只是1.8 KB of C machine-code,它只能直接調用主機的Linux內核。
這臺Linux主機通過系統使用泊塢窗容器調用:詳見「What is meant by shared kernel in Docker?」
在Windows上,說Linux主機是由VirtualBox的VM上運行的虛擬機boot2docker從TinyCore distro生成的。
隨着更新的「Docker for Windows」,同一虛擬機運行通過Hyper-V Windows feature。
假設有一個MacOS的基本映像。它可以在Windows上運行嗎? docker是否會通過Hyper-V爲MacOS創建一個新VM? –
@JacobPhan沒有像「MacOS的基礎映像」這樣的東西:每個基本映像都是能夠在任何Linux內核上運行的映像。只要您的主機(Mac或Windows)能夠爲其提供一個Linux(其內核以及安裝在其中的Docker)的VM,該基本映像就會運行。 – VonC
也沒有「窗口的基礎圖像」這樣的東西嗎?是否有可能通過IIS,會話狀態,MSMQ,sql server獲取圖像? –
我認爲你的問題簡化爲「Docker如何在Windows上工作?」。 –
Docker旋轉虛擬機來運行容器,這就是爲什麼你需要VirtualBox。底層操作系統並不特別相關。 – jonrsharpe