docker獲取鏡像的命令是pull,命令格式爲:nginx
docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標籤]
具體的選項能夠經過 docker pull --help 命令看到,這裏咱們說一下鏡像名稱的格式。redis
示例:docker
docker pull ubuntu:16.04
有了鏡像後,咱們就可以以這個鏡像爲基礎啓動並運行一個容器。以上面的 ubuntu:16.04 爲例,若是咱們打算啓動裏面的 bash 而且進行交互式操做的話,能夠執行下面的命令。ubuntu
$ docker run -it --rm \ ubuntu:16.04 \ bash 說明:
docker run 就是運行容器的命令,後面再細講。centos
能夠經過 docker search
命令來查找官方倉庫中的鏡像bash
docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 465 [OK] tianon/centos CentOS 5 and 6, created using rinse instea... 28
能夠經過 docker push
命令來將本身的鏡像推送到 Docker Hub。ui
$ docker tag ubuntu:17.10 USERNAME/ubuntu:17.10 $ docker push USERNAME/ubuntu:17.10
可使用docker image ls
列出鏡像。code
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE redis latest 5f515359c7f8 5 days ago 183 MB nginx latest 05a60462f8ba 5 days ago 181 MB
列表包含了 倉庫名、標籤、鏡像 ID、建立時間 以及 所佔用的空間。orm
docker image ls
顯示的是鏡像下載到本地後,展開的大小,準確說,是展開後的各層所佔空間的總和docker image ls
列表中的鏡像體積總和並不是是全部鏡像實際硬盤消耗。因爲 Docker 鏡像是多層存儲結構,而且能夠繼承、複用,所以不一樣鏡像可能會由於使用相同的基礎鏡像,從而擁有共同的層。因爲 Docker 使用 Union FS,相同的層只須要保存一份便可,所以實際鏡像硬盤佔用空間極可能要比這個列表鏡像大小的總和要小的多。可使用docker system df
來便捷的查看鏡像、容器、數據卷所佔用的空間。繼承
$ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 24 0 1.992GB 1.992GB (100%) Containers 1 0 62.82MB 62.82MB (100%) Local Volumes 9 0 652.2MB 652.2MB (100%) Build Cache 0B 0B
在鏡像列表中,還能夠看到一個特殊的鏡像,這個鏡像既沒有倉庫名,也沒有標籤,均爲 <none>。:
<none> <none> 00285df0df87 5 days ago 342 MB
$ docker image ls -f dangling=true REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 00285df0df87 5 days ago 342 MB
通常來講,虛懸鏡像已經失去了存在的價值,是能夠隨意刪除的,能夠用下面的命令刪除。
$ docker image prune
爲了加速鏡像構建、重複利用資源,Docker 會利用 中間層鏡像。docker image ls 列表中只會顯示頂層鏡像,若是但願顯示包括中間層鏡像在內的全部鏡像的話,須要加 -a 參數。
$ docker image ls -a
不加任何參數的狀況下,docker image ls
會列出全部頂級鏡像,可是有時候咱們只但願列出部分鏡像。docker image ls
有好幾個參數能夠幫助作到這個事情。
$ docker image ls ubuntu REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 16.04 f753707788c5 4 weeks ago 127 MB ubuntu latest f753707788c5 4 weeks ago 127 MB
$ docker image ls ubuntu:16.04 REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 16.04 f753707788c5 4 weeks ago 127 MB
除此之外,docker image ls
還支持強大的過濾器參數 --filter,或者簡寫 -f。以前咱們已經看到了使用過濾器來列出虛懸鏡像的用法,它還有更多的用法。好比,咱們但願看到在 mongo:3.2 以後創建的鏡像,能夠用下面的命令:
$ docker image ls -f since=mongo:3.2 REPOSITORY TAG IMAGE ID CREATED SIZE redis latest 5f515359c7f8 5 days ago 183 MB nginx latest 05a60462f8ba 5 days ago 181 MB
想查看某個位置以前的鏡像也能夠,只須要把 since 換成 before 便可。
此外,若是鏡像構建時,定義了 LABEL,還能夠經過 LABEL 來過濾。
$ docker image ls -f label=com.example.version=0.1
默認狀況下,docker image ls 會輸出一個完整的表格,可使用-q參數僅列出鏡像id:
$ docker image ls -q 5f515359c7f8 05a60462f8ba
另一些時候,咱們可能只是對錶格的結構不滿意,但願本身組織列;或者不但願有標題,這樣方便其它程序解析結果等,這就用到了 Go 的模板語法。
示例1:列出鏡像結果,而且只包含鏡像ID和倉庫名
$ docker image ls --format "{{.ID}}: {{.Repository}}" 5f515359c7f8: redis 05a60462f8ba: nginx
示例2:以表格等距顯示,而且有標題行,自定義列:
$ docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}" IMAGE ID REPOSITORY TAG 5f515359c7f8 redis latest 05a60462f8ba nginx latest
若是要刪除本地的鏡像,可使用 docker image rm
命令,其格式爲:
$ docker image rm [選項] <鏡像1> [<鏡像2> ...]
其中,<鏡像> 能夠是 鏡像短 ID、鏡像長 ID、鏡像名 或者 鏡像摘要。
也能夠用鏡像名,也就是 <倉庫名>:<標籤>,來刪除鏡像。
像其它能夠承接多個實體的命令同樣,可使用 docker image ls -q
來配合使用 docker image rm
,這樣能夠成批的刪除但願刪除的鏡像。
好比,咱們須要刪除全部倉庫名爲 redis 的鏡像:
$ docker image rm $(docker image ls -q redis)