1. 程式人生 > 實用技巧 >docker 映象相關命令使用

docker 映象相關命令使用

一,使用docker映象

docker映象是docker中三大概念之一,其主要作用是作為啟動容器的模板。

二,獲取docker映象

映象是執行容器的模板,官方Docker Hub 倉庫已經提供了許多映象共開發者使用。如果我們需要獲取某個映象則可以去docker倉庫下載所需的映象。
下載映象的格式:docker pull [倉庫的URL]/[名稱空間]/[倉庫的名稱]:[版本號]
預設情況下:映象URL是:docker.io, 名稱空間名稱:library
下載映象例項:

# 下載官方最新版本的nginx
[root@linux10 /etc/docker]# docker pull nginx 
Using default tag: latest
latest: Pulling from library/nginx
6ec7b7d162b2: Already exists 
cb420a90068e: Already exists 
2766c0bf2b07: Already exists 
e05167b6a99d: Already exists 
70ac9d795e79: Already exists 
Digest: sha256:4cf620a5c81390ee209398ecc18e5fb9dd0f5155cd82adcbae532fec94006fb9
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

三,檢視映象列表

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    ae2feff98a0c   3 weeks ago   133MB

docker image ls == docker images

相關引數:
      -a : 列出系統臨時映象檔案
      --digests : 列出系統映象摘要
      -q : 只顯示映象ID

四,檢視映象詳細資訊

格式:
      docker inspect [映象名稱]:[版本號] | [映象ID]
[root@docker ~]# docker inspect nginx:latest 
[
    {
        "Id": "sha256:ae2feff98a0cc5095d97c6c283dcd33090770c76d63877caa99aefbbe4343bdd",
        "RepoTags": [
            "nginx:latest
......

五,給映象設定標籤tag

格式
	docker tag [映象ID] [別名]:[版本號]

[root@docker ~]# docker tag nginx:latest mynginx:v1
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mynginx      v1        ae2feff98a0c   3 weeks ago   133MB
nginx        latest    ae2feff98a0c   3 weeks ago   133MB

# 給映象設定標籤後會單獨生成一個映象ID不變

六,檢視映象構建歷史

格式:
	docker history [映象名稱或ID]

[root@docker ~]# docker history mynginx:v1 
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
ae2feff98a0c   3 weeks ago   /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B        
<missing>      3 weeks ago   /bin/sh -c #(nop)  STOPSIGNAL SIGQUIT           0B        
<missing>      3 weeks ago   /bin/sh -c #(nop)  EXPOSE 80                    0B        
<missing>      3 weeks ago   /bin/sh -c #(nop)  ENTRYPOINT ["/docker-entr…   0B
......

# 映象構建步驟從上往下看cmd引數是啟動映象後要執行的命令
# 注意:有些構建資訊過長,可以使用--no-trunc 選項來輸出完整資訊。

七,搜尋映象

格式:
	docker search [引數] [映象名稱]

[root@docker ~]# docker search nginx 
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                              Official build of Nginx.                        14284     [OK]       
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1940                 [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   799                  [OK]
......

解釋:
NAME : 映象名稱
DESCRIPTION : 映象簡介
STARS : 收藏數
OFFICIAL : 是否是官方映象
AUTOMATED : 是否是自構建映象

引數:
-f: 過濾 is-official=true
--no-trunc : 不截斷輸出
--limit : 設定查詢的條數

八,刪除映象

格式:
	docker rmi [映象名稱或ID]

[root@docker ~]# docker rmi mynginx:v1 
Untagged: mynginx:v1

引數:
-f : 強制刪除映象

九,清理映象

格式:
	docker image prune [引數]

[root@docker ~]# docker image prune 
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

引數:
-a : 刪除所有未被使用的映象
-f : 是否需要提示

十,儲存映象(容器)

commit儲存映象針對的是儲存容器。

格式:
	docker commit [引數] [容器ID] [映象名稱:版本號]

[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS                NAMES
53126ffa7452   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   nginx
[root@docker ~]# docker commit  -m '這是一個nginx容器' -a 'xiaoma' -p 53126ffa7452
sha256:51fa2e15eb5bdc5b5b4b82b76f502b5656a2949e0f2ab9c14d458688ebf4df10

引數:
-m : 簡介資訊
-a : 指定作者
-p : 儲存映象時,映象暫停執行(掛起)

十一,映象的匯入與匯出(容器)

# 使用export把容器匯出
格式:
	docker export [容器名稱] > [壓縮包名稱]
# 使用 docker export 命令不會壓縮容器大小

[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                NAMES
53126ffa7452   nginx     "/docker-entrypoint.…"   7 minutes ago   Up 7 minutes   0.0.0.0:80->80/tcp   nginx
[root@docker ~]# docker export nginx > nginx.tar
引數:
-o:指定目標檔案位置和名稱 匯入的是字串的寫入而不是標準輸出



# 使用import匯入容器
格式:
	docker import [壓縮包名稱] [映象名稱]
# 該命令與 docker export命令相對,用於匯入容器,匯入後變成映象

[root@docker ~]# docker import /root/nginx.tar 
sha256:8723ba528ff7b67ef8f80ab107c270cd6839cc991fa58d3cf986c85dd01aeb8d
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
<none>       <none>    8723ba528ff7   3 seconds ago   131MB

十一,映象的匯入與匯出(映象)

# 使用save儲存映象
# 針對的是映象
save
格式:
	docker save [映象ID...] > [壓縮包名稱]
# 注:使用映象ID儲存映象時,匯入時沒有名稱
[root@docker ~]# docker save ae2feff98a0c > nginx_iso.tar


# 使用load匯入進行
格式:
	docker load < [壓縮包名稱]

[root@docker ~]# docker load < nginx.tar 
Loaded image: nginx:latest

十二,兩種儲存方式的區別

    1、針對的物件不一樣(export和import針對的是容器,save和load針對的是映象)
    2、save是完全儲存, export是部分儲存
    3、save儲存的體積稍微大一些
    4、save儲存的是原生的映象,export儲存成一個新的映象
    5、save儲存無法修改名稱,export可以修改名稱
    6、save可以同時儲存多個映象,export不可以同時儲存多個容器
    7、save應用場景在部署或者需要追溯的場景中,export應用場景在作為基礎映象時使用