2014-06-22 10 views
15

więc typowy dane tylko pojemnik Docker:Jak działają pojemności kontenerów Docker, nawet jeśli nie są uruchomione?

FROM stackbrew/busybox:latest 

RUN mkdir /data 
VOLUME /data 

Teraz widziałem wiele z nich, które są uruchamiane tak:

docker run -name my-data data true

The true wyjścia polecenia tak szybko, jak to działa , podobnie jak pojemnik. Ale co zaskakujące, nadal obsługuje wolumin po podłączeniu go do innego pojemnika za pośrednictwem --volumes-from my-data.

Moje pytanie brzmi: jak to działa? W jaki sposób zatrzymany kontener nadal umożliwia dostęp w jego woluminach?

Odpowiedz

35

Objętości w oknie dokowanym nie są sprawą najwyższego poziomu. Są "po prostu" częścią meta-danych kontenera.

Kiedy masz VOLUME w swoim dockerfile lub rozpocząć pojemnik z -v, Docker stworzy katalog w /var/lib/docker/volumes * z losowym ID (jest to dokładnie taki sam proces jak tworzenie obrazu z commit oprócz tego, że jest pusta) i dodać ten losowy identyfikator do metadanych kontenera.

Po uruchomieniu kontenera, Docker zainstaluje - zwiąże katalog /var/lib/docker/volumes/ * w danej lokalizacji dla tego woluminu.

Podczas korzystania z volumes-from, Docker będzie po prostu wyszukiwał identyfikator woluminu i położenie z innego kontenera, działającego lub nie, i montuje - wiąże katalog w ustawionej lokalizacji.

Woluminy nie są połączone z runtime, to tylko katalogi, które są montowane.

* Z nowszych wersjach Docker teraz używa sterownika vfs do przechowywania i /var/lib/docker/volumes/ służy tylko do metadatas jak rozmiar, tworzyć czas, itd. Rzeczywiste dane są przechowywane w /var/lib/docker/vfs/dir/<volume id>

+0

Doskonała odpowiedź! Teraz ma to sens. Dzięki :) – MHK

Powiązane problemy