<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 列出鏡像 要想列出已經下載下來的鏡像,可以使用 `docker image ls` 命令。 ```bash $ 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 mongo 3.2 fe9198c04d62 5 days ago 342 MB <none> <none> 00285df0df87 5 days ago 342 MB ubuntu 16.04 f753707788c5 4 weeks ago 127 MB ubuntu latest f753707788c5 4 weeks ago 127 MB ubuntu 14.04 1e0c3dd64ccd 4 weeks ago 188 MB ``` 列表包含了 `倉庫名`、`標簽`、`鏡像 ID`、`創建時間` 以及 `所占用的空間`。 其中倉庫名、標簽在之前的基礎概念章節已經介紹過了。**鏡像 ID** 則是鏡像的唯一標識,一個鏡像可以對應多個**標簽**。因此,在上面的例子中,我們可以看到 `ubuntu:16.04` 和 `ubuntu:latest` 擁有相同的 ID,因為它們對應的是同一個鏡像。 ### 鏡像體積 如果仔細觀察,會注意到,這里標識的所占用空間和在 Docker Hub 上看到的鏡像大小不同。比如,`ubuntu:16.04` 鏡像大小,在這里是 `127 MB`,但是在 [Docker Hub](https://hub.docker.com/r/library/ubuntu/tags/) 顯示的卻是 `50 MB`。這是因為 Docker Hub 中顯示的體積是壓縮后的體積。在鏡像下載和上傳過程中鏡像是保持著壓縮狀態的,因此 Docker Hub 所顯示的大小是網絡傳輸中更關心的流量大小。而 `docker image ls` 顯示的是鏡像下載到本地后,展開的大小,準確說,是展開后的各層所占空間的總和,因為鏡像到本地后,查看空間的時候,更關心的是本地磁盤空間占用的大小。 另外一個需要注意的問題是,`docker image ls` 列表中的鏡像體積總和并非是所有鏡像實際硬盤消耗。由于 Docker 鏡像是多層存儲結構,并且可以繼承、復用,因此不同鏡像可能會因為使用相同的基礎鏡像,從而擁有共同的層。由于 Docker 使用 Union FS,相同的層只需要保存一份即可,因此實際鏡像硬盤占用空間很可能要比這個列表鏡像大小的總和要小的多。 你可以通過以下命令來便捷的查看鏡像、容器、數據卷所占用的空間。 ```bash $ 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>`。: ```bash <none> <none> 00285df0df87 5 days ago 342 MB ``` 這個鏡像原本是有鏡像名和標簽的,原來為 `mongo:3.2`,隨著官方鏡像維護,發布了新版本后,重新 `docker pull mongo:3.2` 時,`mongo:3.2` 這個鏡像名被轉移到了新下載的鏡像身上,而舊的鏡像上的這個名稱則被取消,從而成為了 `<none>`。除了 `docker pull` 可能導致這種情況,`docker build` 也同樣可以導致這種現象。由于新舊鏡像同名,舊鏡像名稱被取消,從而出現倉庫名、標簽均為 `<none>` 的鏡像。這類無標簽鏡像也被稱為 **虛懸鏡像(dangling image)** ,可以用下面的命令專門顯示這類鏡像: ```bash $ docker image ls -f dangling=true REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 00285df0df87 5 days ago 342 MB ``` 一般來說,虛懸鏡像已經失去了存在的價值,是可以隨意刪除的,可以用下面的命令刪除。 ```bash $ docker image prune ``` ### 中間層鏡像 為了加速鏡像構建、重復利用資源,Docker 會利用 **中間層鏡像**。所以在使用一段時間后,可能會看到一些依賴的中間層鏡像。默認的 `docker image ls` 列表中只會顯示頂層鏡像,如果希望顯示包括中間層鏡像在內的所有鏡像的話,需要加 `-a` 參數。 ```bash $ docker image ls -a ``` 這樣會看到很多無標簽的鏡像,與之前的虛懸鏡像不同,這些無標簽的鏡像很多都是中間層鏡像,是其它鏡像所依賴的鏡像。這些無標簽鏡像不應該刪除,否則會導致上層鏡像因為依賴丟失而出錯。實際上,這些鏡像也沒必要刪除,因為之前說過,相同的層只會存一遍,而這些鏡像是別的鏡像的依賴,因此并不會因為它們被列出來而多存了一份,無論如何你也會需要它們。只要刪除那些依賴它們的鏡像后,這些依賴的中間層鏡像也會被連帶刪除。 ### 列出部分鏡像 不加任何參數的情況下,`docker image ls` 會列出所有頂級鏡像,但是有時候我們只希望列出部分鏡像。`docker image ls` 有好幾個參數可以幫助做到這個事情。 根據倉庫名列出鏡像 ```bash $ 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 ubuntu 14.04 1e0c3dd64ccd 4 weeks ago 188 MB ``` 列出特定的某個鏡像,也就是說指定倉庫名和標簽 ```bash $ 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` 之后建立的鏡像,可以用下面的命令: ```bash $ 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` 來過濾。 ```bash $ docker image ls -f label=com.example.version=0.1 ... ``` ### 以特定格式顯示 默認情況下,`docker image ls` 會輸出一個完整的表格,但是我們并非所有時候都會需要這些內容。比如,剛才刪除虛懸鏡像的時候,我們需要利用 `docker image ls` 把所有的虛懸鏡像的 ID 列出來,然后才可以交給 `docker image rm` 命令作為參數來刪除指定的這些鏡像,這個時候就用到了 `-q` 參數。 ```bash $ docker image ls -q 5f515359c7f8 05a60462f8ba fe9198c04d62 00285df0df87 f753707788c5 f753707788c5 1e0c3dd64ccd ``` `--filter` 配合 `-q` 產生出指定范圍的 ID 列表,然后送給另一個 `docker` 命令作為參數,從而針對這組實體成批的進行某種操作的做法在 Docker 命令行使用過程中非常常見,不僅僅是鏡像,將來我們會在各個命令中看到這類搭配以完成很強大的功能。因此每次在文檔看到過濾器后,可以多注意一下它們的用法。 另外一些時候,我們可能只是對表格的結構不滿意,希望自己組織列;或者不希望有標題,這樣方便其它程序解析結果等,這就用到了 [Go 的模板語法](https://gohugo.io/templates/go-templates/)。 比如,下面的命令會直接列出鏡像結果,并且只包含鏡像ID和倉庫名: ```bash $ docker image ls --format "{{.ID}}: {{.Repository}}" 5f515359c7f8: redis 05a60462f8ba: nginx fe9198c04d62: mongo 00285df0df87: <none> f753707788c5: ubuntu f753707788c5: ubuntu 1e0c3dd64ccd: ubuntu ``` 或者打算以表格等距顯示,并且有標題行,和默認一樣,不過自己定義列: ```bash $ docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}" IMAGE ID REPOSITORY TAG 5f515359c7f8 redis latest 05a60462f8ba nginx latest fe9198c04d62 mongo 3.2 00285df0df87 <none> <none> f753707788c5 ubuntu 16.04 f753707788c5 ubuntu latest 1e0c3dd64ccd ubuntu 14.04 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看