一、國內Docker映象倉庫
由於大家都知道的原因,從國外的docker 倉庫中pull映象的下載速度實際上是很慢的。國內的一些一線廠商以及docker官方都在國內免費提供了一些docker映象倉庫,使用國內的映象倉庫下載速度會有很大的提升。例如:
- Docker 官方提供的中國 registry mirror
- 阿里雲加速器
- DaoCloud 加速器
我們以Docker官方提供的中國 registry mirror為例,來講解國內映象倉庫源的配置方式。將 /etc/docker/daemon.json
檔案內容修改為如下內容,如果該檔案不存在就新建一個
{
"registry-mirrors":["https://registry.docker-cn.com"]
}
配置完成之後,重啟docker服務
sudo systemctl restart docker
再去下載pull映象,會發現比以前快了很多。就這麼簡單!
三、搜尋映象
Docker Hub上有很多的官方映象以及第三方上傳的高質量映象,下面就為大家介紹如何搜尋並獲取這些映象。
- 第一種方式就是在Dcoker hub上直接搜尋映象,比如我搜尋redis映象,下方出現綠色盾牌標誌的就是redis官方提供的映象,安全性穩定性都是有保證的。
- 第二種方式可以使用
docker search
來搜尋映象,
我們也可以使用 命令來搜尋映象。比如我們需要一個tomcat的映象來作為我們的web服務。我們可以通
過 docker search 命令搜尋tomcat來尋找適合我們的映象。
docker search redis
OFFICIAL欄位值為OK的那一條記錄為官方的映象。
四、拉取映象
從 Docker 映象倉庫獲取映象的命令是 docker pull其命令格式為:
docker pull [選項] [Docker Registey 地址[:埠號]/] 映象名[:標籤]
具體的選項可以通過 docker pull --help 命令看到,這裡我們說一下映象名稱的格式。
- Docker 映象倉庫地址: 地址的格式一般是
<域名/IP>[:埠號]
。如果使用預設映象倉庫,是不用寫倉庫地址的,如本文第一小節的配置。 - 映象名稱:映象名稱包含兩部分
<使用者名稱>/<軟體名>
。一般來說,軟體官方提供的映象一般都是沒有使用者名稱的。
示例:通過 docker pull獲取redis最新版本的映象
docker pull redis:latest
等同於
docker pull redis
五、列出映象
要想列出已經下載下來的映象,可以使用 docker image ls 命令。
docker images //等同於docker image ls
- REPOSITORY:倉庫及映象名稱
- TAG:標籤及版本號
- IMAGE ID:映象ID,映象的唯一標識
- CREATED:該映象的構建時間
- SIZE: 該映象檔案的大小
六、虛懸映象
在映象列表中,可能會存在一種特殊的映象,該映象既沒有倉庫名/映象名稱,也沒有標籤/版本號,這兩個位置均顯示<none>
,這種映象通常被稱為虛懸映象,如下入所示。
虛懸映象產生的原因是什麼?
其實虛懸映象最開始pull下載的時候是有映象名稱和標籤版本號名稱的,比如redis官方釋出了一個docker映象6.0版本,過了一段時間發現6.0版本的映象有可能存在安全問題,所以重新構建了一個6.0版本的映象。
映象名稱redis和6.0的TAG都被新發布的映象佔用了,舊版本的映象就丟失了映象名稱和標籤,變成了虛懸映象。
一般來說,虛懸映象已經失去了存在的價值,是可以隨意刪除的,使用下面的命令刪除:
docker image prune
七、刪除本地映象
下面的兩種語法都可以完成映象刪除的操作:
docker rmi [選項] <映象1> [<映象2>.....]
docker image rm <映象1> [<映象2>.....]
上文語法中可以使用 映象ID、映象名作為映象的唯一標識用來刪除映象。常用的[選項]是-f
表示強制刪除,有的時候同一個映象上傳到多個倉庫,此時映象ID就不再是唯一標識,需要使用-f
強制刪除才能刪除映象(具有同一個映象ID的所有本地映象全部刪除)。
需要注意的是:刪除映象之前必須確認被刪除的映象,沒有被任何容器使用,否則無法刪除。
如下所示,刪除hello-world映象的響應結果。
# docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
Deleted: sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359
八、映象的匯入匯出
用 save 子命令將本地倉庫的映象儲存為當前目錄下的tar檔案。
docker save -o <自定義包名>.tar <映象名稱>
如下面的命令將 hello-world映象匯出為一個helloworld.tar存放在當前目錄
docker save -o helloworld.tar hello-world
我們可以在另一臺伺服器上,將hello-world映象匯入,匯入方法如下:
匯入方式一(不輸出詳細資訊):
# docker load -i helloworld.tar
匯入方式二(輸出詳細資訊):
# docker load < helloworld.tar
映象匯出匯入功能可以用於映象備份,在沒有映象倉庫的公司中也可以使用這種tar包的方式傳遞映象檔案。
歡迎關注我的公告號:字母哥雜談,回覆003贈送本文所在專欄《docker修煉之道》的PDF版本,30餘篇精品docker文章。字母哥部落格:zimug.com