docker鏡像能跨平臺運行;只要系統(tǒng)架構(gòu)一樣,是可以使用相同的鏡像的,x86的鏡像只能在x86系統(tǒng)使用,arm的鏡像只能在arm系統(tǒng)使用,docker鏡像對容器而言只是模擬了一個環(huán)境,與宿主機的關(guān)系不大。
本教程操作環(huán)境:linux7.3系統(tǒng)、docker-1.13.1版、Dell G3電腦。
docker鏡像能跨平臺運行嗎
docker鏡像和操作系統(tǒng)沒關(guān)系,docker最大的價值就是提出了鏡像打包技術(shù)。首先你的明白什么是docker,什么是鏡像,什么是容器,然后你就能明白鏡像和操作系統(tǒng)之間的關(guān)系。docker是一個引擎,是基于內(nèi)核的一種技術(shù)。比如Linux內(nèi)核,那么它就關(guān)心是不是Linux內(nèi)核,它不關(guān)心你是ubuntu還是centos。所以docker也實現(xiàn)了和操作系統(tǒng)的解耦。鏡像呢是把服務(wù)的運行環(huán)境打成了一個包,比如tomcat,鏡像里面是把除操作系統(tǒng)的內(nèi)核以外,然后再加上tomcat的二進制包。然后通過docker引擎構(gòu)建出來一個tomcat的鏡像。容器呢,比如我們想創(chuàng)建一個tomcat服務(wù),之前的方式是在服務(wù)器中通過tar或者是rpm安裝一個tomcat,然后在start?tomcat;如果我們要安裝多臺的話我們需要多次手動去操作部署。現(xiàn)在有了tomcat鏡像以后,我們可以直接利用鏡像創(chuàng)建出多個tomcat來(關(guān)系是一個tomcat鏡像可以創(chuàng)建出多個tomcat容器-即tomcat服務(wù)),把容器看成是tomcat的進程就行。
一個程序運行,需要操作系統(tǒng)的支持,并且需要訪問自己的私有的數(shù)據(jù)和軟件。docker是容器,它將所有的訪問文件和操作系統(tǒng)的api重新定向了,讓應(yīng)用內(nèi)感覺自己在一個獨立的操作系統(tǒng)上運行,而docker攔截了api調(diào)用,并且把那些全局的對操作系統(tǒng)的訪問進行了包裝,使得程序不會真的訪問它們。因為docker程序訪問的是容器包裝的api,理論上說,只要在另一個操作系統(tǒng)上實現(xiàn)了這些容器的api,就可以把程序移植上去,因為程序不直接和操作系統(tǒng)打交道,感覺不到不同系統(tǒng)的不同。
docker在各平臺上的運行機制
LINUX:docker在linux上共享內(nèi)核,無需虛擬化,完全支持native功能。所以只能創(chuàng)建linux類docker。
windows:docker在windows上,啟用Hyper-V或者虛擬化技術(shù)(通過虛擬機來實現(xiàn),不共享windows內(nèi)核)。可以創(chuàng)建linux類docker和Windows類docker。
Mac:docker在mac?os上,同樣用虛擬化技術(shù)xhyve或者virtualbox來實現(xiàn),不共享mac?os內(nèi)核。只能創(chuàng)建linux類docker,不能創(chuàng)建Mac?OSX的docker。
只要系統(tǒng)架構(gòu)一樣,是可以使用相同的鏡像的,比如x86的鏡像只能x86的系統(tǒng)使用,arm的鏡像只能arm系統(tǒng)使用。docker鏡像對容器而言只是模擬了一個環(huán)境,跟宿主機沒多大關(guān)系
推薦學(xué)習(xí):《docker視頻教程》