Docker常用命令(一)

獲取鏡像

docker pull [選項(xiàng)] [Docker Registry 地址 [:端口號(hào)] / ] 倉(cāng)庫(kù)名 [:標(biāo)簽]

示例:

$ docker pull ubuntu:16.04

沒(méi)有給出Docker鏡像倉(cāng)庫(kù)地址,因此將會(huì)從Docker Hub中獲取鏡像

運(yùn)行

$ docker run -it --rm \
  ubuntu:16.04 \
  bash

" \ "表示 換行

-it :這是兩個(gè)參數(shù),一個(gè)是 -i :交互式操作,一個(gè)是 -t 終端。我們這里打算進(jìn)入 bash 執(zhí)行一些命令并查看返回結(jié)果,因此我們需要交互式終端。
--rm :這個(gè)參數(shù)是說(shuō)容器退出后隨之將其刪除。默認(rèn)情況下,為了排障需求,退出的容器并不會(huì)立即刪除,除非手動(dòng) docker rm 。我們這里只是隨便執(zhí)行個(gè)命令,看看結(jié)果,不需要排障和保留結(jié)果,因此使用 --rm 可以避免浪費(fèi)空間。
ubuntu:16.04 :這是指用 ubuntu:16.04 鏡像為基礎(chǔ)來(lái)啟動(dòng)容器。
bash :放在鏡像名后的是命令,這里我們希望有個(gè)交互式 Shell,因此用的是 bash 。

列出鏡像

//  列出所有已經(jīng)下載的鏡像
$ docker image ls
//  效果同上條命令
$ docker images

結(jié)果:

//倉(cāng)庫(kù)名                  標(biāo)簽                 鏡像ID              創(chuàng)建時(shí)間        所占用的空間
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
ubuntu                   16.04               00fd29ccc6f1        3 weeks ago         111MB
laradock_redis           latest              19a977a11685        3 months ago        107MB
<none>                   <none>              a03f07cc3324        3 months ago        15.5MB
laradock_php-fpm         latest              f4ad9b641995        3 months ago        400MB
laradock_workspace       latest              318c7dc4d367        3 months ago        696MB
laradock_mysql           latest              59affc42159e        3 months ago        343MB
redis                    latest              b6dddb991dfa        3 months ago        107MB
mysql                    8.0                 6cfa8ff69d16        3 months ago        343MB

注:
1、這里的所占空間大小和 Docker Hub 上的鏡像大小不同,Docker Hub 中顯示的是壓縮后的大小。

2、這里的所占空間大小總和,并非實(shí)際的硬盤(pán)的占有大小,因?yàn)镈ocker鏡像是多層存儲(chǔ)結(jié)構(gòu),并且可以繼承、復(fù)用,因此不同鏡像可使用相同的基礎(chǔ)鏡像。

中間層鏡像

默認(rèn)的 docker image ls 列表中,只會(huì)顯示頂層鏡像,

//  顯示包括中間層鏡像在內(nèi)的所有鏡像
$ docker image ls -a 

注:
這樣會(huì)看到很多無(wú)標(biāo)簽的鏡像,和之后的虛懸鏡像不同,這些無(wú)標(biāo)簽的鏡像很多都是中間層鏡像,這些無(wú)標(biāo)簽鏡像,不能刪除,否則會(huì)導(dǎo)致上層鏡像因?yàn)橐蕾噥G失而出錯(cuò)。

列出部分鏡像
//  根據(jù)倉(cāng)庫(kù)名列出鏡像
$ docker image ls ubuntu
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               00fd29ccc6f1        3 weeks ago         111MB
ubuntu              15.10               9b9cb95443b5        17 months ago       137MB

//  列出指定鏡像
$ docker image ls ubuntu:16.04
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               00fd29ccc6f1        3 weeks ago         111MB

// 顯示指定鏡像之后的鏡像列表(可比對(duì)之前的列表)
$ docker image ls -f since=redis
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
ubuntu               16.04               00fd29ccc6f1        3 weeks ago         111MB
laradock_redis       latest              19a977a11685        3 months ago        107MB
<none>               <none>              a03f07cc3324        3 months ago        15.5MB
laradock_php-fpm     latest              f4ad9b641995        3 months ago        400MB
laradock_workspace   latest              318c7dc4d367        3 months ago        696MB
laradock_mysql       latest              59affc42159e        3 months ago        343MB
//  查看之前也可以,把 since 換成 before即可
以特定格式顯示
//  顯示鏡像ID
$ docker image ls -q
00fd29ccc6f1
19a977a11685
a03f07cc3324
f4ad9b641995
318c7dc4d367
59affc42159e

// 自定義結(jié)構(gòu)(使用了Go的模板語(yǔ)法)
$ docker image ls --format "{{.ID}}: {{.Repository}}"
00fd29ccc6f1: ubuntu
19a977a11685: laradock_redis
a03f07cc3324: <none>
f4ad9b641995: laradock_php-fpm
318c7dc4d367: laradock_workspace
59affc42159e: laradock_mysql
b6dddb991dfa: redis

//  以表格等距顯示,并且有標(biāo)題行
$ docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
IMAGE ID            REPOSITORY               TAG
00fd29ccc6f1        ubuntu                   16.04
19a977a11685        laradock_redis           latest
a03f07cc3324        <none>                   <none>
f4ad9b641995        laradock_php-fpm         latest
318c7dc4d367        laradock_workspace       latest
59affc42159e        laradock_mysql           latest
b6dddb991dfa        redis                    latest

鏡像、容器、數(shù)據(jù)卷所在空間

$ docker system df

注:因?yàn)樾枰y(tǒng)計(jì)的鏡像的大小,所以執(zhí)行會(huì)有些慢。

TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              19                  6                   2.339GB             2.133GB (91%)
Containers          19                  0                   292.9kB             292.9kB (100%)
Local Volumes       17                  0                   0B                  0B
Build Cache                                                 0B                  0B

虛懸鏡像

上面的列表中,存在一個(gè)特殊的鏡像,這個(gè)鏡像既無(wú)倉(cāng)庫(kù)名也無(wú)標(biāo)簽,均為<none>。
這是由于新舊鏡像同名,舊鏡像名稱被取消,所以出現(xiàn)倉(cāng)庫(kù)名、標(biāo)簽都為<none>的鏡像,也就是虛懸鏡像。

//  檢索此類鏡像
$ docker image ls -f dangling=true
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              a03f07cc3324        3 months ago        15.5MB

//  刪除此類鏡像
$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

注:
再次檢索,可能還會(huì)有虛懸鏡像存在,這是因?yàn)橛衅渌R像依賴。

刪除本地鏡像

$ docker image rm [選項(xiàng)] <鏡像1> [<鏡像2> ...]

<鏡像>可以是鏡像的ID(可以省略后面部分,但要有唯一性)、倉(cāng)庫(kù)名、摘要。

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
ubuntu                   16.04               00fd29ccc6f1        3 weeks ago         111MB
laradock_redis           latest              19a977a11685        3 months ago        107MB
<none>                   <none>              a03f07cc3324        3 months ago        15.5MB
laradock_php-fpm         latest              f4ad9b641995        3 months ago        400MB
laradock_workspace       latest              318c7dc4d367        3 months ago        696MB
laradock_mysql           latest              59affc42159e        3 months ago        343MB
redis                    latest              b6dddb991dfa        3 months ago        107MB

//  刪除 laradock_mysql 鏡像(取ID的前三個(gè)字符)
$ docker image rm 59a
Untagged: laradock_mysql:latest
Deleted: sha256:59affc42159e311116e8505d5012606607109ec7ad8c2c5219fa05c3e1908d2d
Deleted: sha256:3cc7addd185366686786b581d02d88974978b45ecfbe9e836545271d3e7591e0
Deleted: sha256:295affe1cbf149bd05360a6fb9411d575506450f545ce69c08ce700ee341225f
Deleted: sha256:40ff835efbee0a844c96ccb695cb99c4d1f22d44e78ba8cc210423323935f81e
Deleted: sha256:cdb003b7b07a3b2d7809b31d25a77f3ed65bc1dc066f8f4868e5a86e9a77c723
Deleted: sha256:7a38549437804e837bd3cd5073555ce806640a654e011cc8933fb61974b5b2bc
Deleted: sha256:54661a4bf02571f947385c6c1216d9207a54af5127390364c51499df93695717
Deleted: sha256:ebc2d72325235c58372407b2c85c57d514253b88f6f01ecbadd4387f845d7306
Deleted: sha256:a6daead3b1372f15bd02b3e7512ef11030bd2b7d3b641fb54aade329ddb267f7
Deleted: sha256:9689cfa85ce950b075b93d888b105e2aca2b2eed658732a31e20594fcf0ef404

//  使用鏡像名刪除
$ docker image rm laradock_workspace

//  查看鏡像摘要
$ docker image ls --digests
REPOSITORY               TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
ubuntu                   16.04               sha256:fbaf303d18563e57a3c1a0005356ad102509b60884f3aa89ef9a90c0ea5d1212   00fd29ccc6f1        3 weeks ago         111MB
laradock_redis           latest              <none>                                                                    19a977a11685        3 months ago        107MB
<none>                   <none>              <none>                                                                    a03f07cc3324        3 months ago        15.5MB
laradock_php-fpm         latest              <none>                                                                    f4ad9b641995        3 months ago        400MB
laradock_workspace       latest              <none>                                                                    318c7dc4d367        3 months ago        696MB
redis                    latest              sha256:472c9a984607e6194dc2e645d23907738b77bf76ea0abcf870cbde741d5f650a   b6dddb991dfa        3 months ago        107MB

注:
上面命令的運(yùn)行輸出信息
Untagged :表示滿足刪除條件的鏡像標(biāo)簽,都取消,因?yàn)橐粋€(gè)鏡像可以有多個(gè)標(biāo)簽,只有當(dāng)這個(gè)鏡像的所有標(biāo)簽都取消了,才對(duì)觸發(fā)刪除操作,也就是 Deleted 表示的意思??紤]到Docker的多層存儲(chǔ)結(jié)構(gòu),就算是刪除操作,也只會(huì)刪除沒(méi)有任何鏡像的依賴的層。

使用docker image ls 命令配合刪除
//  刪除所有倉(cāng)庫(kù)名為 laradock_php-fpm 的鏡像
$ docker image rm $(docker image ls -q laradock_php-fpm)
//  $(docker image ls -q laradock_php-fpm)   返回的是 laradock_php-fpm 鏡像的ID
//  注意 -q 的功能,所以是刪除指定 ID 的鏡像

//  刪除所有在 redis 之前的鏡像(原理同上)
$ docker image rm $(docker image ls -q -f before=redis)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Docker — 云時(shí)代的程序分發(fā)方式 要說(shuō)最近一年云計(jì)算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,850評(píng)論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,753評(píng)論 0 120
  • 原文在此 獲取鏡像 之前提到過(guò),Docker Hub 上有大量的高質(zhì)量的鏡像可以用,這里我們就說(shuō)一下怎么獲取這些鏡...
    若與閱讀 1,935評(píng)論 1 5
  • 一、Docker 簡(jiǎn)介 Docker 兩個(gè)主要部件:Docker: 開(kāi)源的容器虛擬化平臺(tái)Docker Hub: 用...
    R_X閱讀 4,521評(píng)論 0 27
  • 外婆是我成年以后,第一個(gè)故去的親人。 親愛(ài)的外婆 外婆去世的那天很蹊蹺,當(dāng)時(shí)我在學(xué)校準(zhǔn)備研究生的復(fù)試,平時(shí)一個(gè)月才...
    不系之舟的船長(zhǎng)閱讀 93評(píng)論 0 0

友情鏈接更多精彩內(nèi)容