composer查看当前镜像取消_Docker image镜像常用命令
鏡像是Docker三大組件之一。Docker運行容器之前需要本地宿主機上存在該鏡像,如果本地宿主機上不存在該鏡像,那么Docker會從鏡像倉庫中下載該鏡像!接下來記錄一下如何管理鏡像,包括下載鏡像、列出鏡像等:
獲取鏡像
Docker Hub上有大量的高質量的鏡像可以使用,接下來將記錄一下怎么獲取這些鏡像。獲取鏡像的命令格式如下:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
1
格式說明:
OPTIONS:選項。可以使用如下OPTIONS:
-a, –all-tags:從鏡像倉庫中下載所有被標記的鏡像
–disable-content-trust:跳過驗證
NAME:倉庫名
TAG:標簽
DIGEST:數據摘要
接下來,我們下載一個Ubuntu 16.04版本的鏡像:
root@ubuntu:~# docker pull ubuntu:16.04
16.04: Pulling from library/ubuntu
b234f539f7a1: Pull complete
55172d420b43: Pull complete
5ba5bbeb6b91: Pull complete
43ae2841ad7a: Pull complete
f6c9c6de4190: Pull complete
Digest: sha256:b050c1822d37a4463c01ceda24d0fc4c679b0dd3c43e742730e2884d3c582e3a
Status: Downloaded newer image for ubuntu:16.04
1
2
3
4
5
6
7
8
9
上面的命令中,未指定具體的地址和端口,因此會在Docker Hub中獲取鏡像。16.04為標簽名。
從下載過程中,先后下載了5個文件,是因為鏡像是由多層存儲所構成,所以,下載也是一層層的去下載,并非單一文件。下載過程中,給出了每一層ID的前12位,并且下載結束后,給出該鏡像完整的sha256的摘要,以確保下載的一致性
運行
有了鏡像之后,我們可以以此為基礎運行一個容器。以上面的ubuntu:16.04為例,我們可以執行如下命令:
docker run -i -t --rm ubuntu:16.04 /bin/bash
1
參數說明:
-i:允許你對容器內的標準輸入進行交互
-t:在新容器內指定一個偽終端或終端
–rm:容器退出后立即刪除容器。一般情況下,無需指定此參數,指定--rm可以避免浪費空間
ubuntu:16.04:以此鏡像為基礎啟動容器
/bin/bash:指定的交互式Shell
此命令還可以進行如下簡寫:
docker run -it --rm ubuntu:16.04 bash
1
查看更多docker run的用法,我們可以使用docker run --help來進行查看
進入容器之后,我們可以在容器內執行任何所需的命令。我們可以使用exit命令獲取ctrl + d來退出容器
列出鏡像
想要知道本機已經下載了哪幾個鏡像,我們可以使用docker image ls來列出本機已經下載好了的所有鏡像:
root@ubuntu:~# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 5e8b97a2a082 3 weeks ago 114MB
centos latest 49f7960eb7e4 3 weeks ago 200MB
1
2
3
4
結構說明:
REPOSITORY:倉庫名稱
TAG:標簽名稱
IMAGE ID:鏡像ID
CREATED:創建時間
SIZE:所占用的空間
值得注意的是,一個鏡像可以對象多個標簽,判斷是否為同一個鏡像,我們可以查看它的鏡像ID,鏡像ID是鏡像的唯一標識,如果鏡像ID一樣,則表示為同一鏡像!!!
仔細觀察,會注意到,這里標識的所占用空間和在Docker Hub上看到的鏡像大小不同,通常情況下,這里標識的所占用空間會比在Docker Hub上看到的大!這是因為Docker Hub顯示的體積是壓縮后的體積,在鏡像上傳和下載過程中,鏡像是保持壓縮狀態的,因為Docker Hub中顯示的大小是網絡傳輸中更關心的流量大小。而docker image ls顯示的是鏡像下載到本地,展開的大小,準確說,是展開后各層所占空間的總和,因為鏡像到本地之后,查看控件的大小,更關心的是本地磁盤占用的空間大小。
值得注意的是,docker image ls列表中所有鏡像體積總和并非是所有鏡像硬盤實際消耗。由于Docker鏡像是多層存儲結構,并且可以繼承、復用,因此不同鏡像因為使用相同的基礎鏡像,從而擁有共同的層。由于Docker使用Union FS技術,相同的層只需要保存一份即可,所以所有鏡像硬盤消耗可能要比這個列表鏡像大小總和要小的多。
我們可以通過如下命令來查看鏡像、容器、數據卷所占用的空間:
root@ubuntu:~# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 0 313.6MB 313.6MB (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0B 0B
1
2
3
4
5
6
docker image ls命令更多操作如下:
顯示摘要信息: docker image ls默認是不輸出摘要信息的,我們可以使用--digests來顯示摘要信息:
root@ubuntu:~# docker image ls --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
ubuntu 16.04 sha256:b050c1822d37a4463c01ceda24d0fc4c679b0dd3c43e742730e2884d3c582e3a 5e8b97a2a082 3 weeks ago 114MB
centos latest sha256:b67d21dfe609ddacf404589e04631d90a342921e81c40aeaf3391f6717fa5322 49f7960eb7e4 3 weeks ago 200MB
1
2
3
4
虛懸鏡像: 當你使用docker image ls命令列出當前宿主機上所有已下載的鏡像時,有可能會有這樣一類鏡像,它既沒有倉庫名,也沒有標簽名,皆為。其實,這類鏡像原來是有倉庫名和標簽的,只不過,隨著官方鏡像的維護,這個鏡像被重新發布了,以相同倉庫名和標簽名重新發布了。那么倉庫名和標簽名被轉移到了新下載的鏡像身上,而舊的鏡像上的名稱和標簽都被取消了,從而成為了,這類無標簽的鏡像我們稱之為虛懸鏡像,我們可以使用如下命令來列出所有的虛懸鏡像:
docker image ls -f dangling=true
1
一般來說,虛懸鏡像已經失去了價值,可以隨意刪除,可以用以下命令進行刪除:
docker image prune
1
中間層鏡像: 為了加速鏡像構建,重復利用資源,Docker會利用中間層鏡像。默認的docker image ls列表中只會顯示頂層鏡像,如果希望顯示包括中間層鏡像在內的所有鏡像的話,需要加上-a參數,如:
root@ubuntu:~# docker image ls -a
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 5e8b97a2a082 3 weeks ago 114MB
centos latest 49f7960eb7e4 3 weeks ago 200MB
1
2
3
4
這樣,你會看到很多無標簽的鏡像,這些鏡像與之前的虛懸鏡像不同,這些無標簽的鏡像很多都是中間層鏡像,是其他鏡像所依賴的鏡像。這些無標簽鏡像不應該被刪除,否則上層鏡像會因為依賴丟失從而導致報錯
列出部分鏡像:
# 指定倉庫名列出鏡像
root@ubuntu:~# docker image ls ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 5e8b97a2a082 3 weeks ago 114MB
# 列出某個特定的鏡像
root@ubuntu:~# docker image ls ubuntu:16.04
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 5e8b97a2a082 3 weeks ago 114MB
1
2
3
4
5
6
7
8
9
10
過濾參數-f: docker image ls還支持強大的過濾參數--filter,簡寫-f
# 過濾出在此鏡像之后建立的鏡像,切記是建立,不是下載!-f為過濾參數,since表示此鏡像之后
root@ubuntu:~# docker image ls -f since=ubuntu:16.04
# 過濾出在此鏡像之前建立的鏡像,切記是建立,不是下載!-f為過濾參數,before表示此鏡像之前
root@ubuntu:~# docker image ls -f before=ubuntu:16.04
# 如果鏡像構建時,還定義了Label,我們還可以通過label來進行過濾
root@ubuntu:~# docker image ls -f label=baidu.com.version=0.1
1
2
3
4
5
6
7
8
指定格式顯示: 默認情況下,docker image ls會顯示一個完整的表格,里面有倉庫名、標簽名、創建時間、鏡像ID和占用空間大小數據,但是,有時我們并不需要知道這么多信息,例如,我們只需要列出所有鏡像的ID,我們可以加上一個-q參數,如下:
root@ubuntu:~# docker image ls -q
5e8b97a2a082
49f7960eb7e4
1
2
3
-f參數還可以與-q參數結合使用,過濾出我們想要的那些鏡像的ID。
有些時候,我們并不滿意docker image ls列出的表格結構,我們只需要獲取鏡像的ID和倉庫名稱,此時使用-q參數,或者不帶參數似乎都不盡滿意。我們可以在使用--format參數來格式化顯示,只顯示我們需要的信息,如下:
root@ubuntu:~# docker image ls --format "{{.Repository}}:{{.ID}}"
ubuntu:5e8b97a2a082
centos:49f7960eb7e4
1
2
3
如果,你想顯示表格,并且擁有標題行,標題行等距離相隔,我們可以對上面的命令進行修改,如下:
root@ubuntu:~# docker image ls --format "table {{.Repository}}{{.ID}}"
REPOSITORY IMAGE ID
ubuntu 5e8b97a2a082
centos 49f7960eb7e4
1
2
3
4
還可以使用.Tag和.Size來顯示TAG和SIZE信息。
刪除鏡像
如果你要刪除本地已經下載的鏡像,你可以使用docker image rm命令,其格式為:
docker image rm [OPTIONS] IMAGE [IMAGE...]
1
首先,我們先列出當前宿主機上所有已經下載好的鏡像列表:
root@ubuntu:~# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 5e8b97a2a082 3 weeks ago 114MB
ubuntu 14.04 578c3e61a98c 3 weeks ago 223MB
ubuntu latest 113a43faa138 3 weeks ago 81.2MB
centos latest 49f7960eb7e4 3 weeks ago 200MB
1
2
3
4
5
6
使用完整ID進行刪除: 使用完整ID進行刪除,完整ID即IMAGE ID的值,例如我們將ubuntu:14.04鏡像進行刪除,我們可以這樣:
root@ubuntu:~# docker image rm 578c3e61a98c
1
使用短ID進行刪除: 如果處于一種無法復制的環境之下,我們需要對鏡像進行刪除,如果使用完整ID進行刪除的話,那么久需要一個一個進行手動輸入,不僅繁瑣,而且還容易出錯。此時我們可以使用短ID進行刪除鏡像,例如,我們將ubuntu:14.04鏡像進行刪除,我們可以這樣:
# 短ID長度不做限制,但是越長越精確,避免刪錯鏡像
root@ubuntu:~# docker image rm 578c3
1
2
使用鏡像名進行刪除: 使用鏡像名進行刪除,即:,如果不帶標簽名,默認為:latest。例如,我們將ubuntu:latest鏡像進行刪除,我們可以這樣:
root@ubuntu:~# docker image rm ubuntu
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d
Deleted: sha256:113a43faa1382a7404681f1b9af2f0d70b182c569aab71db497e33fa59ed87e6
Deleted: sha256:a9fa410a3f1704cd9061a802b6ca6e50a0df183cb10644a3ec4cac9f6421677a
Deleted: sha256:b21f75f60422609fa79f241bf80044e6e133dd0662851afb12dacd22d199233a
Deleted: sha256:038d2d2aa4fb988c06f04e3af208cc0c1dbd9703aa04905ade206d783e7bc06a
Deleted: sha256:b904d425ea85240d6af5a6c6f145e05d5e0127f547f8eb4f68552962df846e81
Deleted: sha256:db9476e6d963ed2b6042abef1c354223148cdcdbd6c7416c71a019ebcaea0edb
1
2
3
4
5
6
7
8
9
使用摘要信息進行刪除: 在上面,我們知道可以使用docker image ls --digests來獲取摘要信息,我們可以根據摘要信息來進行刪除鏡像。例如,我們,我們將ubuntu:16.04鏡像進行刪除,它的摘要信息為:sha256:b050c1822d37a4463c01ceda24d0fc4c679b0dd3c43e742730e2884d3c582e3a,我們可以輸入以下命令將其刪除:
# ubuntu為倉庫名
root@ubuntu:~# docker image rm ubuntu@sha256:b050c1822d37a4463c01ceda24d0fc4c679b0dd3c43e742730e2884d3c582e3a
Untagged: ubuntu@sha256:b050c1822d37a4463c01ceda24d0fc4c679b0dd3c43e742730e2884d3c582e3a
1
2
3
docker image ls配合刪除鏡像: 像其他可以承接過個實體的命令一樣,可以使用docker image ls -q來配合docker image rm來實現批量刪除我們需要刪除的鏡像:
# 刪除所有鏡像
root@ubuntu:~# docker image rm $(docker image ls -q)
# 刪除所有倉庫名為ubuntu的鏡像
root@ubuntu:~# docker image rm $(docker image ls -q ubuntu)
1
2
3
4
5
如果仔細觀察上面幾個刪除鏡像的輸出信息,你會注意到刪除行為分為兩類:一類是Untagged,另一類是Deleted。因此當我們按照上面的命令進行刪除鏡像時,實際上是在要求刪除某個鏡像的標簽。所以首先需要將所有滿足我們要求的鏡像標簽取消,這就是我們看到的Untagged信息。因為一個鏡像可能對應多個標簽,因此我們刪除了所指定的標簽后,還可能有其他標簽指向了這個鏡像,那么Deleted行為就不會發生。所以并非所有的docker rmi都會產生刪除鏡像的行為,有可能僅僅只是取消了某個標簽而已
更多命令
命令說明
docker image ls列出鏡像
docker images列出鏡像
docker image ls -a列出所有鏡像
docker images -a列出所有鏡像
docker image rm刪除鏡像
docker rmi刪除鏡像
使用docker image --help和docker images --help發現,docker image命令與docker images命令效果是一樣的!docker image rm與docker rmi效果是一樣的!
總結
以上是生活随笔為你收集整理的composer查看当前镜像取消_Docker image镜像常用命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信要怎么群发才有效果微信电脑版本如何群
- 下一篇: 使用OpenFace进行人脸识别(1)