最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker image tag為什么出現(xiàn)none的原因及解決

 更新時(shí)間:2023年10月15日 10:45:14   作者:帽兒山的槍手  
當(dāng)我們使用docker加載新的鏡像時(shí),有時(shí)候會(huì)發(fā)現(xiàn)Repository和Tag名稱都為none的情況,這通常是由于沒有指定正確的標(biāo)簽名稱或者倉(cāng)庫(kù)名稱所導(dǎo)致的,本文主要介紹了docker image tag為什么出現(xiàn)none的原因及解決,感興趣的可以了解一下

今天和小伙伴們,聊一個(gè)工作中遇到的小問題~

背景

公司項(xiàng)目是基于容器化架構(gòu)設(shè)計(jì),具體業(yè)務(wù)也拆成了多個(gè)微服務(wù)及對(duì)應(yīng)了多個(gè)docker image鏡像。研發(fā)環(huán)境中會(huì)頻繁進(jìn)行升級(jí)image鏡像,導(dǎo)致出現(xiàn)很多image為 <none> 命名的鏡像,這種也稱為懸空鏡像。

本篇文章將展示幾種現(xiàn)象會(huì)導(dǎo)致這種情況發(fā)生。

下文演示環(huán)境,版本信息如下

  • Centos8
  • docker server: 23.0.1
  • docker client: 20.10.17
  • containerd: 1.6.18
  • runc version: 1.1.4

現(xiàn)象一

前提條件: 在同環(huán)境中兩個(gè)鏡像名稱:tag都相同,image層數(shù)據(jù)內(nèi)容不一致,覆蓋后則會(huì)出現(xiàn) <none> 標(biāo)志。

注意: 如果僅是鏡像名稱:tag相同則不會(huì)覆蓋,也不會(huì)出現(xiàn) <none> 標(biāo)志。 因?yàn)閕mage層數(shù)據(jù)沒有發(fā)生變化,docker認(rèn)為是同一個(gè)鏡像。

[root@k8s-host docker]# cat > Dockerfile << EOF
> FROM alpine:latest
> ADD test.txt /root
> EOF
[root@k8s-host docker]# echo 1 > test.txt
[root@k8s-host docker]# docker build -t alpine1:v1.0 .
[+] Building 0.1s (7/7) FINISHED                                                                                                                                    
 => [internal] load build definition from Dockerfile                                                                                                           0.0s
 => => transferring dockerfile: 134B                                                                                                                           0.0s
 => [internal] load .dockerignore                                                                                                                              0.0s
 => => transferring context: 2B                                                                                                                                0.0s
 => [internal] load metadata for docker.io/library/alpine:latest                                                                                               0.0s
 => [internal] load build context                                                                                                                              0.0s
 => => transferring context: 96B                                                                                                                               0.0s
 => CACHED [1/2] FROM docker.io/library/alpine:latest                                                                                                          0.0s
 => [2/2] ADD test.txt /root                                                                                                                                   0.0s
 => exporting to image                                                                                                                                         0.0s
 => => exporting layers                                                                                                                                        0.0s
 => => writing image sha256:aa416b5c47216b392755ba2b4ad08f5531f3aa86c103744e261e49ce7a354021                                                                   0.0s
 => => naming to docker.io/library/alpine1:v1.0                                                                                                                0.0s
 [root@k8s-host docker]# docker images
REPOSITORY                                TAG       IMAGE ID       CREATED          SIZE
alpine1                                   v1.0      aa416b5c4721   30 seconds ago   7.34MB

該鏡像是基于alpine:latest鏡像進(jìn)行二次編譯

Dockerfile中僅增加 test.txt 用來區(qū)分層內(nèi)容

FROM alpine:latest
ADD test.txt /root

上述步驟中執(zhí)行 docker images 可以看到 alpine1:v1.0 已經(jīng)存在鏡像ID aa416b5c4721 的容器鏡像。

下面繼續(xù)編譯鏡像,名字與 alpine1:v1.0 相同, 僅僅將Dockerfile中 test.txt 文件內(nèi)容修改。

進(jìn)行第二次加載鏡像,此時(shí)系統(tǒng)已存在相同的鏡像名稱。

[root@k8s-host docker]# echo 2 > test.txt 
[root@k8s-host docker]# docker build -t alpine1:v1.0 .
[+] Building 0.1s (7/7) FINISHED                                                                                                                                    
 => [internal] load build definition from Dockerfile                                                                                                           0.0s
 => => transferring dockerfile: 134B                                                                                                                           0.0s
 => [internal] load .dockerignore                                                                                                                              0.0s
 => => transferring context: 2B                                                                                                                                0.0s
 => [internal] load metadata for docker.io/library/alpine:latest                                                                                               0.0s
 => [internal] load build context                                                                                                                              0.0s
 => => transferring context: 96B                                                                                                                               0.0s
 => CACHED [1/2] FROM docker.io/library/alpine:latest                                                                                                          0.0s
 => [2/2] ADD test.txt /root                                                                                                                                   0.0s
 => exporting to image                                                                                                                                         0.0s
 => => exporting layers                                                                                                                                        0.0s
 => => writing image sha256:e4159797272a190d20856475858bab23d11e64d6bdd9a57ca8a85ad3c3a17087                                                                   0.0s
 => => naming to docker.io/library/alpine1:v1.0                                                                                                                0.0s
[root@k8s-host docker]# docker images
REPOSITORY                                TAG       IMAGE ID       CREATED          SIZE
alpine1                                   v1.0      e4159797272a   3 seconds ago    7.34MB
<none>                                    <none>    aa416b5c4721   6 minutes ago    7.34MB

原來的 alpine1:v1.0 鏡像ID為 aa416b5c4721 的docker鏡像目前屬于 none 標(biāo)記,這是因?yàn)橛辛诵碌溺R像名稱相同造成。雖然是none標(biāo)記,如果之前有引用的容器仍然可以使用。

注意:如果將 alpine1:v1.0 鏡像ID為 e4159797272a 的docker鏡像刪除, 下面的none標(biāo)記也不會(huì)發(fā)生變化。只有當(dāng)時(shí)的 Dockerfile中的 ADD 文件重新docker build -t alpine1:v1.0編譯,此處的 none 標(biāo)記才能顯示正常。

現(xiàn)象二

docker save 時(shí)鏡像沒有指定鏡像名稱:tag,而是使用的鏡像ID。

[root@k8s-host docker]# docker images
REPOSITORY                                TAG       IMAGE ID       CREATED          SIZE
alpine1                                   v1.0      e4159797272a   3 seconds ago    7.34MB
[root@k8s-host docker]# docker save e4159797272a | gzip > alpine1.docker
[root@k8s-host docker]# docker rmi e4159797272a
Untagged: alpine1:v1.0
Deleted: sha256:e4159797272a190d20856475858bab23d11e64d6bdd9a57ca8a85ad3c3a17087
[root@k8s-host docker]# docker load < alpine1.docker 
Loaded image ID: sha256:e4159797272a190d20856475858bab23d11e64d6bdd9a57ca8a85ad3c3a17087
[root@k8s-host docker]# docker images
REPOSITORY                                TAG       IMAGE ID       CREATED          SIZE
<none>                                    <none>    e4159797272a   21 minutes ago   7.34MB

操作中,將alpine1:v1.0鏡像沒有按照鏡像:tag方式 save,而是使用 docker save e4159797272a 鏡像ID格式保存, 僅僅微小的變化會(huì)導(dǎo)致鏡像加載時(shí)的效果不同。

當(dāng)執(zhí)行完 docker load < alpine1.docker 加載鏡像后發(fā)現(xiàn),此時(shí)的鏡像ID還是原來沒有變化,而鏡像名稱:TAG 都變成none。

注意:如果 docker save 導(dǎo)出鏡像時(shí)不指定 鏡像名稱:tag 這種方式,在docker load 加載鏡像時(shí)會(huì)丟失鏡像名稱和tag標(biāo)記。

現(xiàn)象三

正運(yùn)行的容器所引用的鏡像,將其強(qiáng)行刪除鏡像docker images會(huì)出現(xiàn)none標(biāo)記

[root@k8s-host docker]# docker images
REPOSITORY                                TAG       IMAGE ID       CREATED         SIZE
alpine4                                   v1.0      7ea0f12a3321   7 hours ago     7.34MB
[root@k8s-host docker]# docker rmi alpine4:v1.0
Error response from daemon: conflict: unable to remove repository reference "alpine4:v1.0" (must force) - container 945e9f47d833 is using its referenced image 7ea0f12a3321
[root@k8s-host docker]# docker rmi -f alpine4:v1.0
Untagged: alpine4:v1.0
[root@k8s-host docker]# docker ps -a | grep alpine
945e9f47d833   7ea0f12a3321   "/bin/sh -c 'tail -f…"   54 seconds ago   Up 53 seconds             alpine4
[root@k8s-host docker]# docker images
REPOSITORY                                TAG       IMAGE ID       CREATED         SIZE
<none>                                    <none>    7ea0f12a3321   7 hours ago     7.34MB

操作中執(zhí)行 docker rmi -f alpine4:v1.0 命令后,僅刪除了鏡像:tag,并沒有刪除鏡像數(shù)據(jù)層。

可以看到只有鏡像名稱:tag 變成了none,實(shí)際的鏡像還是存在的。因?yàn)槟壳?945e9f47d833 容器中引用到了 7ea0f12a3321 鏡像是無法使用 docker rmi -f 刪除的。

擴(kuò)展內(nèi)容

尤其在測(cè)試、研發(fā)環(huán)境中會(huì)出現(xiàn)很多 <none> 標(biāo)記的鏡像,占用較多資源。 在docker cli工具中可以使用如下命令來清理未使用的鏡像。

$ docker system prune

注意:該命令包含刪除所有未使用的容器、網(wǎng)絡(luò)、鏡像(懸空的和未引用的),以及卷(可選)。

也可單獨(dú)刪除所有無名的鏡像(懸空鏡像)

$ docker rmi $(docker images -f "dangling=true" -q)

到此這篇關(guān)于docker image tag為什么出現(xiàn)none的原因及解決的文章就介紹到這了,更多相關(guān)docker image tag none內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker部署MySQL鏡像的保姆級(jí)教程

    Docker部署MySQL鏡像的保姆級(jí)教程

    docker是一種容器化技術(shù),可以將應(yīng)用程序及其依賴項(xiàng)打包成一個(gè)獨(dú)立的可移植容器,mysql是一個(gè)流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在Docker中部署MySQL鏡像可以方便地創(chuàng)建和管理MySQL數(shù)據(jù)庫(kù)實(shí)例,本文給大家介紹了Docker部署MySQL鏡像的教程,需要的朋友可以參考下
    2025-06-06
  • Docker搭建redis集群的實(shí)現(xiàn)

    Docker搭建redis集群的實(shí)現(xiàn)

    本文主要介紹了Docker搭建redis集群的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • docker?vllm開機(jī)啟動(dòng)方式

    docker?vllm開機(jī)啟動(dòng)方式

    文章內(nèi)容是關(guān)于vllm啟動(dòng)大模型的個(gè)人經(jīng)驗(yàn)總結(jié),主要涉及啟動(dòng)腳本中的interval參數(shù)設(shè)置,以及重啟驗(yàn)證的步驟,建議大家參考并支持腳本之家
    2026-05-05
  • Docker定制容器鏡像的2種方法(推薦)

    Docker定制容器鏡像的2種方法(推薦)

    本篇文章主要介紹了Docker定制容器鏡像的2種方法(推薦),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Docker-compose安裝的全過程

    Docker-compose安裝的全過程

    這篇文章主要介紹了Docker-compose安裝的全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Docker磁盤空間清理的方法實(shí)現(xiàn)

    Docker磁盤空間清理的方法實(shí)現(xiàn)

    在使用Docker的過程中,系統(tǒng)會(huì)逐漸積累一些無用的垃圾文件,占據(jù)寶貴的磁盤空間并影響系統(tǒng)性,本文主要介紹了Docker磁盤空間清理的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Node.js服務(wù)Docker容器化應(yīng)用實(shí)踐小結(jié)

    Node.js服務(wù)Docker容器化應(yīng)用實(shí)踐小結(jié)

    這篇文章主要介紹了Node.js服務(wù)Docker容器化應(yīng)用實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • docker-compose安裝MySQL8.0.39全過程

    docker-compose安裝MySQL8.0.39全過程

    這篇文章主要介紹了docker-compose安裝MySQL8.0.39全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-10-10
  • 詳解如何在 Docker 中設(shè)置 Go 并部署應(yīng)用

    詳解如何在 Docker 中設(shè)置 Go 并部署應(yīng)用

    在本教程中,我們將學(xué)習(xí)如何使用 docker 部署 golang web 應(yīng)用程序。 具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Docker核心概念與鏡像倉(cāng)庫(kù)操作指南

    Docker核心概念與鏡像倉(cāng)庫(kù)操作指南

    文章講解了Docker核心概念與操作,包括鏡像(只讀模板)、容器(運(yùn)行實(shí)例)、鏡像倉(cāng)庫(kù)(存儲(chǔ)分發(fā)平臺(tái))的定義及蛋糕、圖書館等類比,梳理了鏡像拉取、推送、搜索等常用命令,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-09-09

最新評(píng)論

郓城县| 万荣县| 尼木县| 海晏县| 唐海县| 建瓯市| 桐柏县| 德庆县| 翁牛特旗| 高陵县| 勐海县| 五台县| 泗水县| 山东省| 平顺县| 麻阳| 玛曲县| 寻乌县| 泸水县| 承德县| 岑溪市| 南郑县| 泸溪县| 肥城市| 潜山县| 拜泉县| 柯坪县| 桃江县| 墨竹工卡县| 眉山市| 平凉市| 祁阳县| 闵行区| 雷山县| 收藏| 伊金霍洛旗| 阿克陶县| 长沙县| 隆子县| 且末县| 临潭县|