docker 映象相關命令使用
阿新 • • 發佈:2021-01-11
一,使用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應用場景在作為基礎映象時使用