準備工作
一臺虛擬機
一個centos鏡像
centos鏡像中裝了docker
需求:構建一個安裝了vim的centos鏡像
一、方法一
- 首先我們去pull一個centos
docker pull centos
- 然後運行centos
docker run -it centos
- 之後在centos容器中安裝vim:
yum install -y vim
- 退出鏡像exit,然後先查看鏡像,根據鏡像名稱去構建image
docker commit nice_shockley tinner/centos-vim
至此,構建完畢。
但是此種方法有個弊端:我們是基於已經構建好的鏡像去安裝東西然後commit產生鏡像的, 但是可能我們在安裝的時候會產生一些不安全的因素,所以並不推薦用這種方法去構建鏡像,因此我們大多數情況下還是推薦用方法二
二、方法二(通過Dockerfile文件)
- 首先我們創建一個Dockerfile文件:
FROM centos
RUN yum install -y vim
- 然後build:
docker build -t tinner/centos-vim .
三、原理
在build的時候,我們知道:image是隻讀的,不能在其之上進行讀寫,要想讀寫只能在其container之上,其實它底層用的也是方法一:我們在build之後觀察控制檯可以發現:
在第二步開始的時候產生了一個臨時的container的id,然後基於這個臨時的container去進行安裝vim,安裝完成之後:
將這個臨時的container移除掉之後又產生了一個隨機的id,build成功之後將這個id作爲新的image的id