Docker學習三:鏡像

轉載:
http://blog.itpub.net/31556785/viewspace-2564295/
https://blog.csdn.net/huangjun0210/article/details/85764357

1. 鏡像管理

在這裏插入圖片描述

(1) 鏡像搜索(docker search)
  • 在搭建項目環境的時候我們可以通過檢索docker官方爲我們提供的鏡像雲倉庫,查看是否已經有別人構建好的鏡像,可以拉取下來直接使用。
  • 命令格式:docker search [參數] 搜索項
  • 常用參數:
	-f 根據提供的格式篩選結果
	--limit int 展示最大的結果數,默認爲25

在這裏插入圖片描述

(2) 鏡像下載(docker pull)
  • 根據項目需求挑選心儀的鏡像,我們就可以把它下載下來。
  • 命令格式:docker pull [參數] 鏡像名稱[:版本號]

注意:這裏版本號沒有指定,默認下載最新版本的鏡像,例如 Ubuntu 最新的鏡像版本爲18.04,你想下載16.04的版本就可以使用 docker pull ubuntu:16.04下載指定版本

(3) 鏡像查看(docker images / doker image ls)
  • 上一步我們下載了心儀的鏡像,如何確定鏡像下載成功了呢?我們可以使用docker images / doker image ls查看本地鏡像
  • 命令格式:
    docker images [參數] [倉庫名[版本號]]
    docker image ls [參數] [倉庫名[版本號]]
  • 常用參數:
	-a 展示所有的鏡像
	-q 只展示鏡像ID

在這裏插入圖片描述

(4) 鏡像刪除(docker rmi / docker image rm)
  • 命令格式:
    docker rmi [參數] 鏡像名[鏡像名…] – 可以同時刪除一個或多個本地鏡像
  • 常用參數:
	-f 強制刪除

在這裏插入圖片描述

(5) 鏡像保存備份(docker save)
  • 命令格式:
    docker save [參數] 鏡像名[鏡像名…] | 鏡像ID[鏡像ID…] – 可以打包一個或多個鏡像保存成本地tar文件

  • 常用參數:

	- o 指定寫入的文件名和路徑,默認爲STDOUT

注意:導出時建議指定鏡像的名稱最好不要使用鏡像ID,否則備份導入時鏡像名稱與版本號會顯示none

在這裏插入圖片描述

(6) 鏡像備份導入(docker load)
  • 命令格式:docker load [參數]

  • 常用參數:

	- i 指定要導入的文件默認爲STDIN

在這裏插入圖片描述

(7) 鏡像重命名(docker rename)

如果很不幸,你在鏡像導出時選擇的是鏡像ID導出,那麼你可以使用rename重命名那些信息顯示不全的鏡像

  • 命令格式:docker rename [源鏡像] [新鏡像]
(8) 鏡像歷史信息(docker history)

這個命令在之後使用Dockerfile創建docker鏡像時會經常用到,我們可以使用這個命令查看鏡像在之前的更改操作。

  • 命令格式:docker history [參數] 鏡像
    在這裏插入圖片描述
(9) 鏡像詳細信息(docker image inspect)
  • 命令格式:
    docker image inspect [參數] 鏡像 [鏡像…]
    docker inspect [參數] 鏡像 [鏡像…]
  • 命令參數:
 	-f 利用特定Go語言的format格式輸出結果

注意:我們不帶參數的使用docker inspect 會打印長串的信息(標準的json格式),所以推薦使用 -f 參數查看指定的信息

-f 參數使用的簡單實例:
在這裏插入圖片描述
在這裏插入圖片描述

2. 構建鏡像

構建Docker鏡像有以下兩種方法:

  • 使用docker commit命令。
  • 使用Dockerfile 文件。
    不推薦使用docker commit來構建鏡像,而應該使用更靈活、更強大的Dockerfile來構建Docker鏡像。

docker commit 構建鏡像可以想象爲是在往版本控制系統裏提交變更。我們先創建一個容器,並在容器裏做出修改,就像修改代碼一樣,最後再將修改提交爲一個鏡像。

(1) docker commit命令創建鏡像
[root@eshop-cache05 ~]# docker run -i -t centos /bin/bash
[root@013c7cd152f0 /]# lsof -i:8080
bash: lsof: command not found
[root@013c7cd152f0 /]# yum install lsof

我們啓動了一個容器,並在裏面安裝了lsof。使用docker commit命令創建鏡像,需要先使用exit命令從容器裏退出,之後再運行docker commit命令:

[root@eshop-cache05 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
013c7cd152f0        centos              "/bin/bash"         7 minutes ago       Exited (1) 13 seconds ago                       quizzical_swartz

[root@eshop-cache05 ~]# docker commit 013c7cd152f0 test/centos-lsof
sha256:9b132f56464faad7794451276ef13e0e46a15bc05154ee15ddb170479994de43

[root@eshop-cache05 ~]# docker images test/centos-lsof
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
test/centos-lsof    latest              9b132f56464f        About a minute ago   272MB

在使用docker commit命令中,指定了要提交的修改過的容器的ID(可以通過docker ps命令得到剛創建的容器ID),以及一個目標鏡像倉庫和鏡像名,這裏是test/centos-lsof。需要注意的是,docker commit提交的只是創建容器的鏡像與容器的當前狀態之間有差異的部分,這使得該更新非常輕量。通過docker images 可以查看新創建的鏡像信息。

(2) Dockerfile 文件創建鏡像
[root@eshop-cache05 opt]# mkdir centos-lsof
[root@eshop-cache05 opt]# cd centos-lsof/
[root@eshop-cache05 centos-lsof]# vim Dockerfile

創建一個名爲centos-lsof的目錄用來保存Dockerfile,這個目錄就是我們的構建環境(build environment),Docker則稱此環境爲上下文(context)或者構建上下文(build context)。Docker會在構建鏡像時將構建上下文和該上下文中的文件和目錄上傳到Docker守護進程。這樣Docker守護進程就能直接訪問你想在鏡像中存儲的任何代碼、文件或者其他數據。這裏我們還創建了一個Dockerfile文件,我們將用它構建一個能作爲Web服務器的Docker鏡像。
Dockerfile文件內容如下:

FROM centos
RUN yum install -y lsof

執行docker build命令時,Dockerfile中的所有指令都會被執行並且提交,並且在該命令成功結束後返回一個新鏡像。

[root@eshop-cache05 centos-lsof]# docker build -t="hj/centos-lsof" .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM centos
 ---> 1e1148e4cc2c
Step 2/2 : RUN yum install -y lsof
 ---> Running in 608dfe9f6ee5
 ...
Successfully built e713f53bf3cf
Successfully tagged hj/centos-lsof:latest
  • -t選項爲新鏡像設置了倉庫和名稱,這裏倉庫爲hj,鏡像名爲centos-lsof。
  • 命令中最後的“.”告訴Docker到當前目錄中去找Dockerfile文件。也可以指定一個Git倉庫地址來指定Dockerfile的位置,這裏Docker假設在Git倉庫的根目錄下存在Dockerfile文件。
[root@eshop-cache05 centos-lsof]# docker build -t="hj/centos-lsof"  [email protected]:hj/centos-lsof

構建成功可以通過docker images查看

[root@eshop-cache05 centos-lsof]# docker images hj/centos-lsof 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hj/centos-lsof      latest              e713f53bf3cf        5 minutes ago       272MB
3. 發佈鏡像

具體查看轉載博客:
https://blog.csdn.net/huangjun0210/article/details/85764357
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章