1. 程式人生 > >Docker $ 第二篇:Docker 映象的使用

Docker $ 第二篇:Docker 映象的使用

一.Docker映象簡介

1.映象是Docker三大元件之一,Docker執行容器需要對應的映象,如果說映象是程式,那容器就是程序,如果本地不存在映象,Docker就會從倉庫自動下載映象。

二.Docker使用映象

  • 拉取映象
# docker pull huangliangyun/hello-world:v1

語法

  1. # docker pull [選項][Docker Registry 地址[:埠號]/]倉庫名[:標籤]
  2. 地址格式:<域名/IP>[:埠號] 。預設地址是 Docker Hub。
  3. 倉庫名格式:<使用者名稱>/<軟體名>(使用者名稱預設為librury)。
  • 檢視映象
# 檢視所有映象
# docker images

語法

  1. # docker images [OPTIONS] [REPOSITORY[:TAG]]
  • 刪除映象
# 刪除所有映象
# docker rmi $(docker images)

語法

  1. # docker rmi [OPTIONS] IMAGE [IMAGE…]

三.commit 定製映象

原則:

1.不輕易適應,應使用Dockerfile完成。
2.除了改動的檔案,很多無關檔案被修改、新增,導致映象臃腫,難以維護。
3.可用作入侵後儲存現場。

原理:

1.在原有映象的基礎上,疊加上容器的儲存層。
2.將容器儲存層儲存下來成為映象。

語法:

# docker commit [選項] <容器ID或容器名> [<倉庫名>[:<標籤>]]

例項:
  1. 啟動容器
# docker run --rm -d -p 80:80 --name webserver nginx

通過80埠可訪問到nginx頁面

  1. 進入容器
# docker exec -it webserver bash
  1. 更改頁面資訊
/# echo '<h1>Hello,Docker!</h1>'>/usr/share/nginx/html/index.html

修改後再次訪問頁面,發現內容已變

  1. 退出容器
/# exit
  1. 儲存為新的映象
# docker commit --author "hly <[email protected]>" --message "修改網頁" webserver nginx:v2
  1. 關閉舊容器,執行新映象
# docker rm -f $(docker ps -aq) 
# docker run  --rm -d -p 80:80 --name webserver nginx:v2

內容為修改後的內容

  1. 可關閉新容器,執行舊映象
# docker rm -f $(docker ps -aq) 
# docker run --rm -d -p 80:80 --name webserver nginx

原來的映象沒有變化。

  1. 檢視改動內容
# docker diff webserver
  1. 檢視映象歷史
# docker history nginx:v2

四.Dockerfile定製映象

原理

1.映象定製是定製每一層新增的配置、檔案。
2.把每一層修改、安裝、構建、操作都寫入一個指令碼,用這個指令碼定製映象。
3.Dockerfile是文字檔案,包含一條條指令,每一條指令構建一層,描述該層如何構建。

特點

構建的映象透明,體積不臃腫,易於維護。

例項
  1. 在空資料夾下建立一個Dockerfile(名字可不為Dockerfile)
# mkdir myngnix
# cd mynginx
# touch Dockerfile

在這裡插入圖片描述

  1. 在Dockerfile檔案裡面輸入以下內容
FROM nginx
RUN echo '<h1>Hello,Docker!</h1>'       > /usr/share/nginx/html/index.html
  • FROM
    1.指定映象基礎(以一個映象為基礎,在其上進行定製)
  • RUN
    1.每一個RUN指令建立一層映象。
    2.可用&&將各命令串聯,簡化為一層。
    3.支援行尾新增\換行,首行#註釋。
  1. 構建映象
# 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。

  1. 構建成功後檢視映象
# docker images