Docker $ 第二篇:Docker 映象的使用
一.Docker映象簡介
1.映象是Docker三大元件之一,Docker執行容器需要對應的映象,如果說映象是程式,那容器就是程序,如果本地不存在映象,Docker就會從倉庫自動下載映象。
二.Docker使用映象
# docker pull huangliangyun/hello-world:v1
語法
- # docker pull [選項][Docker Registry 地址[:埠號]/]倉庫名[:標籤]
- 地址格式:<域名/IP>[:埠號] 。預設地址是 Docker Hub。
- 倉庫名格式:<使用者名稱>/<軟體名>(使用者名稱預設為librury)。
# 檢視所有映象
# docker images
語法
- # docker images [OPTIONS] [REPOSITORY[:TAG]]
# 刪除所有映象
# docker rmi $(docker images)
語法
- # docker rmi [OPTIONS] IMAGE [IMAGE…]
三.commit 定製映象
原則:
1.不輕易適應,應使用Dockerfile完成。
2.除了改動的檔案,很多無關檔案被修改、新增,導致映象臃腫,難以維護。
3.可用作入侵後儲存現場。
原理:
1.在原有映象的基礎上,疊加上容器的儲存層。
2.將容器儲存層儲存下來成為映象。
語法:
# docker commit [選項] <容器ID或容器名> [<倉庫名>[:<標籤>]]
例項:
- 啟動容器
# docker run --rm -d -p 80:80 --name webserver nginx
通過80埠可訪問到nginx頁面
- 進入容器
# docker exec -it webserver bash
- 更改頁面資訊
/# echo '<h1>Hello,Docker!</h1>'>/usr/share/nginx/html/index.html
修改後再次訪問頁面,發現內容已變
- 退出容器
/# exit
- 儲存為新的映象
# docker commit --author "hly <[email protected]>" --message "修改網頁" webserver nginx:v2
- 關閉舊容器,執行新映象
# docker rm -f $(docker ps -aq)
# docker run --rm -d -p 80:80 --name webserver nginx:v2
內容為修改後的內容
- 可關閉新容器,執行舊映象
# docker rm -f $(docker ps -aq)
# docker run --rm -d -p 80:80 --name webserver nginx
原來的映象沒有變化。
- 檢視改動內容
# docker diff webserver
- 檢視映象歷史
# docker history nginx:v2
四.Dockerfile定製映象
原理
1.映象定製是定製每一層新增的配置、檔案。
2.把每一層修改、安裝、構建、操作都寫入一個指令碼,用這個指令碼定製映象。
3.Dockerfile是文字檔案,包含一條條指令,每一條指令構建一層,描述該層如何構建。
特點
構建的映象透明,體積不臃腫,易於維護。
例項
- 在空資料夾下建立一個Dockerfile(名字可不為Dockerfile)
# mkdir myngnix
# cd mynginx
# touch Dockerfile
- 在Dockerfile檔案裡面輸入以下內容
FROM nginx
RUN echo '<h1>Hello,Docker!</h1>' > /usr/share/nginx/html/index.html
- FROM
1.指定映象基礎(以一個映象為基礎,在其上進行定製)- RUN
1.每一個RUN指令建立一層映象。
2.可用&&將各命令串聯,簡化為一層。
3.支援行尾新增\換行,首行#註釋。
- 構建映象
# docker build -t nginx:v3 .
(檔案所在目錄執行,末尾有點,指上下文目錄)
過程
1.RUN指令啟動容器。
# docker build [選項] <上下文路徑/URL/->
2.提交修改(層)。
3.刪除容器。
引數
-f:指定要使用的Dockerfile路徑
-m:設定記憶體最大值
–no-cache:建立映象的過程不使用快取
–pull:嘗試去更新映象的新版本
-quiet, -q:安靜模式,成功後只輸出鏡像 ID
–rm:設定映象成功後刪除中間容器
–tag, -t:映象的名字及標籤
注意事項
1.不能放到根目錄,否則會打包硬碟下所有檔案。
2.可以寫.dockerignore剔除不需要上下文傳遞給docker引擎檔案。
3.可用-f …/xx/指定某個檔案作為Dockerfile.
4.支援URL構建:docker build https://github.com/xxx。
- 構建成功後檢視映象
# docker images