最近使用Docker容器技術(shù)時(shí)遇到了一個(gè)問(wèn)題,在使用Docker build命令后,由于疏忽沒(méi)有給構(gòu)建好的鏡像打tag,導(dǎo)致無(wú)法使用已經(jīng)構(gòu)建好的鏡像。下面具體介紹一下這個(gè)問(wèn)題在實(shí)踐中的表現(xiàn)及解決方案。
問(wèn)題表現(xiàn):
$ docker build -t myimage:latest . Successfully built 123456789 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE123456789 1 second ago 1GB myimage latest 123456789 1 second ago 1GB
從上面的命令輸出中可以看到,我們構(gòu)建了一個(gè)myimage:latest的鏡像,但是在docker images命令中,我們發(fā)現(xiàn)還有一個(gè)REPOSITORY為"none",TAG為"none"的鏡像。
出現(xiàn)這個(gè)問(wèn)題的原因是Docker build命令會(huì)在構(gòu)建鏡像時(shí)給每一步驟的鏡像生成一個(gè)ID,這些ID會(huì)作為后續(xù)步驟中的FROM參數(shù)來(lái)使用。如果我們沒(méi)有給構(gòu)建好的鏡像打tag,那么這個(gè)鏡像就會(huì)以ID來(lái)表示,從而出現(xiàn)REPOSITORY為"none",TAG為"none"的情況。
解決方案:
$ docker tag 123456789 myimage:1.0.0 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE myimage 1.0.0 123456789 1 minute ago 1GB myimage latest 123456789 1 minute ago 1GB
要解決這個(gè)問(wèn)題,我們可以使用docker tag命令為構(gòu)建好的鏡像打上tag,如上面的例子中我們打了一個(gè)1.0.0的tag。這樣我們就可以通過(guò)REPOSITORY和TAG來(lái)查找鏡像了。
總結(jié):
在使用Docker build命令時(shí),一定要記得給構(gòu)建好的鏡像打上tag,以免出現(xiàn)REPOSITORY為"none",TAG為"none"的情況。如果不小心出現(xiàn)了這種情況,可以通過(guò)docker tag命令為構(gòu)建好的鏡像打上tag來(lái)解決。