2014-10-16 15 views
6

przebiegu polecenia docker images i docker images -a wyniki w następujące wyjścia:Jeśli obrazy w Dockerze są nieoznakowane, czy są one w ogóle używane, czy tylko sieroty?

$ docker images 
REPOSITORY   TAG  IMAGE ID   CREATED   VIRTUAL SIZE 
ubuntu    14.04  9cbaf023786c  2 days ago  192.8 MB 
$ docker images -a 
REPOSITORY   TAG  IMAGE ID   CREATED   VIRTUAL SIZE 
ubuntu    14.04  9cbaf023786c  2 days ago  192.8 MB 
<none>    <none>  03db2b23cf03  2 days ago  192.8 MB 
<none>    <none>  8f321fc43180  2 days ago  192.8 MB 
<none>    <none>  6a459d727ebb  2 days ago  192.8 MB 
<none>    <none>  2dcbbf65536c  2 days ago  192.8 MB 
<none>    <none>  97fd97495e49  2 days ago  192.6 MB 

są obrazy oznaczone <none> jakiekolwiek znaczenie? Jeśli nie: dlaczego pochodzą z oznaczonymi obrazami, które wyciągnąłem? Czy rozmiary się sumują, czy to tylko powtórka? Jeśli tak, czy mogę je usunąć bez wpływu na moją pracę?

Odpowiedz

8

Pliki obrazów są niezależne i łączą się za pomocą unionfs magic, aby utworzyć działający kontener. Obrazy, które Cię interesują, są często oznaczone niezapomnianymi nazwami. Można usunąć nieużywane obrazy, tzn. Te, które nie przyczyniają się do żadnego ważnego obrazu. I zrobić to w ten sposób w bash:

function docker_rm_unnamed_images { 
    sudo docker rmi $(sudo docker images | grep '^<none>' | awk '{print $3}') 
} 

Można myśleć o obrazie Döcker jako stos „warstw”. Każde polecenie Dockerfile dodaje dodatkową warstwę do obrazu. Ważne jest, aby zdać sobie sprawę, że każde z tych poleceń tworzy osobny plik obrazu. Więc Dockerfile

FROM foo 
RUN a 
RUN b 
RUN c 

byłby stos

image=1 (possibly pulled from the foo registry) 
image=2 (after applying a to image 1) 
image=3 (after applying b to image 2) 
image=4 (after applying c to image 3) 

Jest prawdopodobne, że obraz foo składał się z wielu innych warstw, dzięki czemu końcowy obraz jest stos 4 lub więcej obrazów. Każdy z tych plików obrazów znajduje się w rejestrze obrazów w doku. Większość z nich jest bez nazwy, ponieważ odpowiadają na przykład poleceniu RUN. Każdy z plików graficznych 1-4 jest prawdopodobnie dość mały (chyba że odpowiadają one instalacji yum install p1 .. p100 na przykład). Razem tworzą system plików kontenera, który ostatecznie uruchamiasz.

+0

Dzięki za to. Znalazłem ten sposób, aby je usunąć wczoraj tutaj: http://stackoverflow.com/questions/21398087/how-to-delete-dockers-images Moje pytania są w rzeczywistości bardziej ukierunkowane na zrozumienie: Czy obrazy oznaczone są "" z jakieś znaczenie? Dlaczego pochodzą z oznaczonymi obrazami, które wyciągnąłem? Czy rozmiary się sumują, czy to tylko powtórka? – Steven

+0

@Steven: zaktualizowałem moją odpowiedź. – seanmcl

2

Aby usunąć wszystkie obrazy bez znaczników, potrzebne są dodatkowe opcje:

docker rmi $(sudo docker images -a | grep '^<none>' | awk '{print $3}') 

opcją '-a': pokaż wszystkie obrazy, w tym nieoznaczonych zdjęć

Powiązane problemy