2019獨角獸企業重金招聘Python工程師標準>>>
1、簡介
docker運行前需要本地存在對應的鏡像,若鏡像不存在本地,docker會先嘗試從默認的鏡像倉庫下載(Docker Hub公共注冊服務器中的倉庫)。用戶也可以配置,使用自定義的鏡像倉庫。
2、列出鏡像列表
sudo docker images
當以普通用戶身份去使用docker images時,出現以下錯誤:
那就要加上sudo
各個選項說明:
- REPOSITORY:表示鏡像的倉庫源
- TAG:鏡像的標簽
- IMAGE ID:鏡像ID
- CREATED:鏡像創建時間
- SIZE:鏡像大小
同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,如ubuntu倉庫源里,有15.10、14.04等多個不同的版本,我們使用 REPOSITORY:TAG 來定義不同的鏡像。
使用docker inspect命令可以獲取某個鏡像的詳細信息
sudo docker inspect ***
3、獲取鏡像
鏡像是docker運行容器的前提。使用docker pull命令從網絡上下載鏡像。
sudo docker pull NAME[:TAG]
若不顯示制定tag,默認選擇latest標簽,即下載最新版本的鏡像。
這個例子下載的是ubuntu:latest鏡像,是最新的版本的鏡像。可以從圖中看到,鏡像文件一般由若干層組成,行首的字符串代表各層的ID。
也可以根據指定標簽下載特定版本的某一鏡像,如14.04標簽
sudo docker pull ubuntu:14.04
還可以從其他注冊服務器的倉庫下載,如DockerPool社區的鏡像源dl.dockerpool.com下載最新的ubuntu鏡像。
sudo docker pull dl.dockerpool.com:5000/ubuntu
4、搜尋鏡像
搜索遠端倉庫中共享的鏡像
sudo docker search TEAM
返回了很多包含關鍵字的鏡像,包括鏡像名字、描述、星級(受歡迎度)、是否官方創建、是否自動創建等等。
5、刪除鏡像
5.1、使用鏡像的標簽刪除鏡像
sudo docker rmi IMAGE[IMAGE...]
iMAGE可以為標簽或ID
比如我先獲取一個鏡像ubuntu 14.04,可以看到存在;
然后我嘗試刪除。 果然刪除成功。
5.2、使用鏡像的ID刪除鏡像
使用docker rmi跟上ID后,會先嘗試刪除所有指向該鏡像的標簽,然后刪除鏡像文件本身。
但是,當有該鏡像創建的容器存在時,鏡像文件是無法被刪除的。比如之前創建的hello-world 使用docker ps -a 可以看到本機上存在的所有容器。可以看到,后臺存在一個退出狀態的容器,是基于hello-world和hello-world:latest鏡像創建的,師徒刪除該鏡像,docker會提示有容器在運行,無法刪除。
強行刪除在rmi后面加個-f
6、創建鏡像
有三種方法:基于已有鏡像的容器創建、基于本地模板導入、基于dockerfile創建。
6.1、基于已有鏡像的容器創建
docker commit [options] CONTAINER [REPOSITORY[:TAG]]
主要選項包括:
- -a,--author="" 作者信息;
- -m,--message=""提交消息;
- -p,--pause=true 提交時暫停容器運行
演示如何創建一個新鏡像。首先啟動一個鏡像。由于我本地沒有這個鏡像,所以會先下載。
然后,在其中進行修改操作。圖中,是創建一個test文件,之后退出。
記住容器的ID為e65004f2033f;
此時該容器跟之前的鏡像相比,已經發生了改變。用docker commit 命令來提交為一個新的鏡像。提交時候用id或名稱來指定容器
返回的是新創建鏡像的ID信息;查看本地鏡像列表,可以看到已創建。
7、存出和載入鏡像
7.1、存出鏡像
sudo docker save -o
例如,存出本地的ubuntu:14.04鏡像為文件ubuntu_14.04.tar
7.2、載入鏡像
從存出的本地文件中再導入到本地鏡像庫
sudo docker load
例子:從文件ubuntu_14.04.tar導入鏡像到本地列表,如下圖所示的兩種方式: