docker鏡像123?
額,由於沒有實驗環境,沒有親手實踐,因此理解可能有不對的地方。
反正也是學習筆記,以后再修改吧...
docker的鏡像跟virtualbox的鏡像不一樣。在虛擬機中,鏡像是一個系統的完整體,包括了系統、用戶在上面做的操作等等。而在docker中,鏡像是一組文件的疊加。
解釋下,玩過PS的應該都知道圖層的概念。一個圖片由不同的圖層疊加混合,最終形成一張完美的照片。其中底層可能原始圖片,然后蓋上一層黃色,再覆蓋掉不想要的部分,或者添加點點綴,通過這種圖層的方式,可以方便的合並出想要的圖片。在docker中,先通過啟動文件啟動一個基礎的文件,然后在它上面加載文件系統,同時加載其他的文件。
舉個例子,我想要搭建一個apache服務器的鏡像,可能會按照下面的步驟:
- 加載啟動文件
- 加載文件系統,如ubuntu或者centos或者fedora
- 加載emacs
- 加載apache
就像下面的圖展示的一樣:
加載完這些鏡像后,會創建一個讀寫層。之前加載的鏡像都是只讀的,所有的修改操作都會放在這個讀寫層中。如果修改的是下面只讀層的內容,則會拷貝到讀寫層再修改,這樣就保證了層的讀寫分離。
docker鏡像相關的命令
查看docker鏡像
sudo docker images
從鏡像網站上拉取鏡像:
sudo docker pull fedora:20
查找鏡像:
sudo docker search puppet
推送鏡像:
sudo docker push jamtur01/static_web
刪除鏡像:
sudo docker rmi jamtur01/static_web
通過dockerfile創建鏡像:
touch Dockerfile
sudo docker build =t="xxx/xxx:xxx"
查詢docker歷史:
sudo docker history 2dfshfjksd
dockerfile中的命令
1 CMD:啟動時運行的命令
2 ENTRYPOINT:不會被run的指令覆蓋。
3 WORKERID:創建新的鏡像,設置工作目錄
4 ENV:設置環境變量
5 USER:指定運行的用戶
6 VOLUME:向鏡像添加卷
7 ADD:把文件夾中的內容復制到鏡像中
8 COPY:與ADD類似,但是不會解壓或者提取
9 ONBUILD:添加觸發器