最近在學docker,一開始自以為自己能分清鏡像和容器的區別,以為鏡像就是 配置好的且安裝好各種依賴的操作系統,就是個環境。而容器是運行在那個配置好的操作系統之上的某個進程。但后來我發現,鏡像不只只是操作系統,還可以是某個應用,比如nginx,redis等等。那從nginx或redis鏡像run起來的容器是什么?從操作系統建立起來的容器我能理解,但是從一個應用建立起來的容器,有點理解不了。那么問題來了:1,是不是說,我寫了一個程序,打包編譯成一個可執行文件,這個可執行文件是個鏡像,那從這個可執行文件run起來的容器是啥?這個可執行文件的進程?2,如果鏡像是nginx或者redis或者我自己寫的一個可執行文件,那么這個鏡像是不是同時也得包含操作系統等等底層的東西?3,現在已經容器化的公司,是不是把代碼編譯成一個(可執行文件)鏡像,然后直接從這個鏡像來建立容器?而不是用操作系統鏡像
1 回答

UYOU
TA貢獻1878條經驗 獲得超4個贊
我的理解是分為兩種情況,我舉例來說明:
1、以php為例,php項目啟動依賴php環境,nginx環境,如果是光光打包成一個鏡像顯然是不合理的,我的做法是:起一個php的容器,暴露其端口,供nginx容器使用,nginx容器映射其端口到宿主機,并且宿主機將其工作目錄掛載到容器之中,這樣宿主機就可以訪問啟動的項目內容;
1、以node項目為例,node項目僅僅依賴于node環境,我的做法是:將工作目錄掛載到鏡像中打包起來,拉起來這個鏡像即可,但是這樣需要每次在修改文件之后重新build
鏡像.
以上
- 1 回答
- 0 關注
- 766 瀏覽
添加回答
舉報
0/150
提交
取消