1. 程式人生 > >Docker映象的常用命令

Docker映象的常用命令

搜尋映象

可使用docker search 命令搜尋存放在Docker Hub中的映象。

命令格式:

1
docker search [OPTIONS] TERM

引數:

Name, shorthand Default Description
--automated false 只列出自動構建的映象
--filter, -f   根據指定條件過濾結果
--limit
25 搜尋結果的最大條數
--no-trunc false 不截斷輸出,顯示完整的輸出
--stars, -s 0 只展示Star不低於該數值的結果

示例1:

1
docker search java

執行該命令後,Docker就會在Docker Hub中搜索含有“java”這個關鍵詞的映象倉庫。執行該命令後,可看到類似於如下的表格:

1
2
3
4
5
6
7
NAME                    DESCRIPTION                STARS     OFFICIAL   AUTOMATED
java                    Java is a concurrent, ...   1281      [OK]       
anapsix/alpine-java     Oracle Java 8 (and 7) ...   190                  [OK]
isuper/java-oracle      This repository conta ...   48                   [OK]
lwieske/java-8          Oracle Java 8 Contain ...   32                   [OK]
nimmis/java-centos      This is docker images ...   23                   [OK]
...

該表格包含五列,含義如下:

① NAME:映象倉庫名稱。

② DESCRIPTION:映象倉庫描述。

③ STARS:映象倉庫收藏數,表示該映象倉庫的受歡迎程度,類似於GitHub的Stars。

④ OFFICAL:表示是否為官方倉庫,該列標記為[OK]的映象均由各軟體的官方專案組建立和維護。由結果可知,java這個映象倉庫是官方倉庫,而其他的倉庫都不是映象倉庫。

⑤ AUTOMATED:表示是否是自動構建的映象倉庫。

示例2:

1
docker search -s 10 java

下載映象[重要]

使用命令docker pull 命令即可從Docker Registry上下載映象。

命令格式:

1
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

引數:

Name, shorthand Default Description
--all-tags, -a false 下載所有標籤的映象
--disable-content-trust true 忽略映象的校驗

示例1:

1
docker pull java

執行該命令後,Docker會從Docker Hub中的java倉庫下載最新版本的Java映象。

示例2:

該命令還可指定想要下載的映象標籤以及Docker Registry地址,例如:

1
docker pull reg.itmuch.com/java:7

這樣就可以從指定的Docker Registry中下載標籤為7的Java映象。

列出映象[重要]

使用docker images 命令即可列出已下載的映象。

執行該命令後,將會看到類似於如下的表格:

1
2
3
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
java                latest              861e95c114d6        4 weeks ago         643.1 MB
hello-world         latest              c54a2cc56cbb        5 months ago        1.848 kB

該表格包含了5列,含義如下:

① REPOSITORY:映象所屬倉庫名稱。

② TAG:映象標籤。預設是latest,表示最新。

③ IMAGE ID:映象ID,表示映象唯一標識。

④ CREATED:映象建立時間。

⑤ SIZE:映象大小。

命令格式:

1
docker images [OPTIONS] [REPOSITORY[:TAG]]

引數:

Name, shorthand Default Description
--all, -a false 列出本地所有的映象(含中間映像層,預設情況下,過濾掉中間映像層)
--digests false 顯示摘要資訊
--filter, -f   顯示滿足條件的映象
--format   通過Go語言模板檔案展示映象
--no-trunc false 不截斷輸出,顯示完整的映象資訊
--quiet, -q false 只顯示映象ID

示例:

1
2
3
4
5
docker images
docker images java
docker images java:8
docker images --digests
docker images --filter "dangling=true"   # 展示虛懸映象

刪除本地映象[重要]

使用docker rmi 命令即可刪除指定映象。

命令格式:

1
docker rmi [OPTIONS] IMAGE [IMAGE...]

引數:

Name, shorthand Default Description
--force, -f false 強制刪除
--no-prune false 不移除該映象的過程映象,預設移除

例1:刪除指定名稱的映象。

1
docker rmi hello-world

表示刪除hello-world這個映象。

例2:刪除所有映象。

1
docker rmi -f $(docker images)

-f引數表示強制刪除。

儲存映象

使用docker save 即可儲存映象。

命令格式:

1
docker save [OPTIONS] IMAGE [IMAGE...]

引數:

Name, shorthand Default Description
--output, -o   Write to a file, instead of STDOUT

例1:

1
2
docker save busybox > busybox.tar
docker save --output busybox.tar busybox

載入映象

使用docer load 命令即可載入映象。

命令格式:

1
docker load [OPTIONS]

引數:

Name, shorthand Default Description
--input, -i   從檔案載入而非STDIN
--quiet, -q false 靜默載入

例1:

1
2
docker load < busybox.tar.gz
docker load --input fedora.tar

構建映象[重要]

通過Dockerfile構建映象。

命令格式:

1
docker build [OPTIONS] PATH | URL | -

引數:

<
Name, shorthand Default Description
--add-host   新增自定義從host到IP的對映,格式為(host:ip)
--build-arg   設定構建時的變數
--cache-from   作為快取源的映象
--cgroup-parent   容器可選的父cgroup
--compress false 使用gzip壓縮構建上下文
--cpu-period 0 限制CPU CFS (Completely Fair Scheduler) 週期
--cpu-quota 0 限制CPU CFS (Completely Fair Scheduler) 配額
--cpu-shares, -c 0 CPU使用權重(相對權重)
--cpuset-cpus   指定允許執行的CPU
--cpuset-mems   指定允許執行的記憶體
--disable-content-trust true 忽略校驗
--file, -f   指定Dockerfile的名稱,預設是‘PATH/Dockerfile’
--force-rm false 刪除中間容器
--iidfile   將映象ID寫到檔案中
--isolation   容器隔離技術
--label   設定映象使用的元資料
--memory, -m 0 設定記憶體限制
--memory-swap 0 設定Swap的最大值為記憶體+swap,如果設定為-1表示不限swap
--network default 在構建期間設定RUN指令的網路模式
--no-cache false 構建映象過程中不使用快取
--pull false 總是嘗試去更新映象的新版本
--quiet, -q false 靜默模式,構建成功後只輸出鏡像ID
--rm true 構建成功後立即刪除中間容器
--security-opt   安全選項
--shm-size 0 指定/dev/shm 目錄的大小
--squash false 將構建的層壓縮成一個新的層
--tag, -t   設定標籤,格式:name:tag,tag可選
--target   設定構建時的目標構建階段
--ulimit   Ulimit 選項