前面我們講解了Docker Hub上的鏡像是基于Dockerfile文件太伊,那我們可不可以自己構(gòu)建鏡像怀挠?怎樣構(gòu)建鏡像乃摹?
實際上鏡像的構(gòu)建有三種方法:
1. 基于運行的容器狀態(tài)生成新的鏡像云茸,即docker commit善镰;
2.? 基于Dockerfile構(gòu)建鏡像妹萨,即docker build;
3. 利用Docker Hub自動構(gòu)建鏡像炫欺。
基于運行的容器狀態(tài)生成新的鏡像乎完,即docker commit
我們大體已經(jīng)知道要運行容器就需要使用鏡像,顯然使用現(xiàn)成的鏡像(無論是從Docker Hub還是從別人處獲绕仿濉)在方便不過了树姨。但是實際工作中,現(xiàn)成的鏡像往往不能完全滿足我們的需求毫别。例如官方的Ubuntu鏡像就沒有提供ssh的功能娃弓。那這個時候就需要我們基于已有的鏡像去構(gòu)建新的鏡像。Docker提供的docker commit命令很好的實現(xiàn)了這一功能岛宦,其過程可以總結(jié)為:
1台丛、基于已有的鏡像運行容器;
2、進入容器修改容器挽霉;
3防嗡、利用docker commit生成新的鏡像。
下面侠坎,我們以Ubuntu鏡像為例演示如何構(gòu)建新的鏡像蚁趁。
進入容器,bc50d965d081為容器短ID
查詢ssh服務
更新源
安裝openssh-server包
基于容器名docker commit生成新的鏡像
查詢本地新的鏡像ubuntu-ssh
新的鏡像大小變?yōu)?05M实胸,比原來大了將近100M他嫡,原因在安裝openssh-server時安裝了很多依賴包。驗證新的鏡像是否安裝了ssh服務庐完。
以上就是利用docker commit構(gòu)建鏡像的完整過程钢属。下一節(jié),我們將講解另一種構(gòu)建鏡像的方法:基于Dockerfile的docker build命令门躯。
下一篇:Docker的那些事兒—基于Dockerfile構(gòu)建鏡像淆党,即docker build(11)