Udało mi się znaleźć pojemniki w katalogu /var/lib/docker/containers
, ale nie mogę znaleźć obrazów.
Jakie są katalogi i pliki /var/lib/docker
?
docker
docker-image
nemo
źródło
źródło
Odpowiedzi:
Zawartość
/var/lib/docker
katalogu różni się w zależności od sterownika, którego Docker używa do przechowywania .Domyślnie będzie to
aufs
jednak może spaść z powrotemoverlay
,overlay2
,btrfs
,devicemapper
lubzfs
w zależności od wsparcia jądra. W większości miejsc tak będzie,aufs
ale poszły z RedHatsdevicemapper
.Możesz ręcznie ustawić sterownik pamięci za pomocą opcji
-s
lub--storage-driver=
do demona Docker ./var/lib/docker/{driver-name}
będzie zawierał specyficzne dla sterownika miejsce na zawartość obrazów./var/lib/docker/graph/<id>
teraz zawiera tylko metadane dotyczące obrazu w plikachjson
ilayersize
.W przypadku
aufs
:/var/lib/docker/aufs/diff/<id>
ma zawartość pliku obrazów./var/lib/docker/repositories-aufs
to plik JSON zawierający lokalne informacje o obrazie. Można to wyświetlić za pomocą poleceniadocker images
.W przypadku
devicemapper
:/var/lib/docker/devicemapper/devicemapper/data
przechowuje obrazy/var/lib/docker/devicemapper/devicemapper/metadata
metadaneźródło
docker info
i znajdź rzeczywistą lokalizację właściwą dla konfiguracji .Docker for Mac
z 2 obrazów po 1,5 GB każdy i/var/lib
nie ma katalogudocker
.Podczas korzystania z aplikacji Docker dla komputerów Mac wydaje się, że kontenery są przechowywane w maszynie wirtualnej znajdującej się pod adresem:
AKTUALIZACJA (dzięki uprzejmości mmorin ):
Według stanu na 15 stycznia 2019 r. Wydaje się, że jest tylko ten plik:
który zawiera Docker Disk oraz wszystkie zawarte w nim obrazy i kontenery.
źródło
ubuntu
,nginx
), czy to jest lokalizacja dla wszystkich kontenerów? Oryginalne pytanie dotyczy zdjęć , a nie pojemników ...Docker for Mac
z dwóch obrazów po 1,5 GB każdy i~/Library/Containers/Data/com.docker.docker/Data
nie ma katalogu,com.docker.driver.amd64-linux
a jedyny duży plik mavms/0/Docker.raw
3,6 GB.du -hd1 ~/Library/Containers/com.docker.docker/Data/
to był stary sposób, teraz się zmienił. Zignoruj tę odpowiedź od 2019 r
W szczególnym przypadku Mac OS X lub Windows, przy użyciu boot2docker, obrazy Docker są przechowywane w maszynie wirtualnej VirtualBox zarządzanej przez boot2docker.
Ta maszyna wirtualna będzie przechowywana w normalnym miejscu obrazów VirtualBox:
OS X:
~/VirtualBox VMs/boot2docker-vm
Windows:
%USERPROFILE%/VirtualBox VMs/boot2docker-vm
Możesz go zresetować, uruchamiając (OSTRZEŻENIE: Zniszczy to wszystkie obrazy, które dotąd zbudowałeś i pobrałeś):
Jest to szczególnie przydatne, jeśli podczas budowania / debugowania kompilacji nie użyto ton pośrednich obrazów bez przydatnych opcji --rm, cytuję je tutaj w celach informacyjnych: Użyj:
zamiast:
źródło
%USERPROFILE%\.docker\machine\machines
(zwróć uwagę na kropkę na ścieżce)C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
W rzeczywistości obrazy dokerów są przechowywane w dwóch plikach, jak pokazano za pomocą następującego polecenia
źródło
docker info
jest bardzo przydatny, ale dane wyjścioweDocker Root Dir: /var/lib/docker
nie wskazują miejsca przechowywania obrazów (patrz odpowiedź specyficzna dla komputerów Mac powyżej).W nowo wydanej aplikacji „Docker dla systemu Windows”, która korzysta z funkcji Hyper-V, dane znajdują się na wirtualnym dysku twardym Docker:
Możesz także otworzyć Menedżera funkcji Hyper-V, aby uzyskać dostęp do Docker / MobyLinuxVM.
źródło
C:\ProgramData\docker\windowsfilter
dla mnie pliki obrazów . Więcej informacji: stackoverflow.com/a/39971954/188740Obrazy są przechowywane w
/var/lib/docker/graph/<id>/layer
.Pamiętaj, że obrazy różnią się od obrazu nadrzędnego. Identyfikator nadrzędny jest przechowywany z metadanymi obrazu
/var/lib/docker/graph/<id>/json
.Kiedy jesteś
docker run
obrazem. AUFS „scali” wszystkie warstwy w jeden użyteczny system plików.źródło
W Ubuntu możesz „grać” z uruchomionymi obrazami
W rzeczywistości obrazy są przechowywane w
/var/lib/docker/aufs/diff
źródło
W przypadku osoby korzystającej z przybornika Docker (korzystającego z maszyny dokującej) odpowiedzi dotyczące boot2docker w systemie Mac OS X są nieprawidłowe. Maszyna wirtualna maszyny dokującej jest nazywana „domyślną” i istnieje w
/Users/<username>/.docker/machine/machines/default/
katalogu.źródło
W Docker dla Windows (macierzysty Windows) domyślna pamięć kontenerów to:
źródło
docker build
polecenie i nie widzę pliku, który moim zdaniem jest plikiem obrazu. Widzę niektóre foldery i niektóre pliki tekstowe (np. Service.txt). Jaki typ pliku i z jakim rozszerzeniemdocker build
tworzy?Jeśli używasz Dockera dla MAC (nie
boot2docker
), to lokalizacja to/Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/
źródło
jasper@~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux $ ls -lh | grep Docker -rw-r--r--@ 1 jasper staff 6.3G May 25 19:20 Docker.qcow2
znalazłem obraz. Ale to nie są pojemniki. Nie widać ich w katalogu Danych naprawdę ..Jak tu odpowiedziano , jeśli korzystasz z komputera Mac, znajduje się on pod adresem
źródło
Rozwijając odpowiedź Tristana, w systemie Windows za pomocą funkcji Hyper-V możesz przenieść obraz, wykonując następujące kroki z Matthuisman:
źródło
docker build
polecenia. Jestem na komputerze z systemem Windows 10. Patrzę w C: \ Users \ Public \ Documents \ Hyper-V \ Wirtualne dyski twarde, ale widzę tylko MobyLinuxVM.vhdx. Gdzie są przechowywane rzeczywiste obrazy?Jeśli pamiętasz, że Docker nadal działa na maszynie wirtualnej, ścieżki systemowe są względne do maszyny wirtualnej, a nie z systemu Mac OSX. Jak mówi, wszystko jest zawarte w pliku VM:
Spróbuj uruchomić obraz Alpine przy użyciu tej opcji woluminu i polecenia ls, aby wyświetlić listę hosta VM:
Następnie spróbuj:
Teraz możesz wyświetlić folder dokera z hosta maszyny Wirtualnej
źródło
Używam boot2docker dla Docker na Mac OSX, więc obrazy są przechowywane w
/Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk
.źródło
Mogę odpowiedzieć na to pytanie tylko dla użytkowników Ubuntu:
Katalog główny dokera można znaleźć po uruchomieniu polecenia
docker info
Katalog dokerów zostanie podany w tym wierszu: „
Docker Root Dir: /var/lib/docker
”Informacje o obrazach dokerów są przechowywane w katalogu dokerów:
/var/lib/docker/aufs/diff/
Pamiętaj, że te rzeczy nie są takie same we wszystkich wersjach dokera. Obecnie używam 1.12.3.
źródło
Użyj
docker info
polecenia, aby wyświetlić informacje systemowe, a lokalizacja może się różnić.Oto przykład Ubuntu (sprawdź katalog główny ):
A oto przykład na Travis CI (patrz katalog Docker Root Dir ):
Możesz użyć
--format
parametru, aby wyodrębnić te informacje do jednego pliku, nplub:
źródło
W Docker dla Windows dzienniki są tutaj:
%USERPROFILE%\AppData\Local\Docker
źródło
sprawdź folder dokera w
/var/lib
obrazy są przechowywane w poniższej lokalizacji:
źródło
/var/lib/docker/image/overlay2/
. Należy również pamiętać, że dzieje się tak z powodu faktu, że silnik Docker używaoverlay2
jako sterownika pamięci masowej.użyj
docker inspect container_id
znajdź folder w MergedDir
źródło
W przypadku „Docker Desktop” kliknij ikonę zasobnika systemowego dokera i kliknij „Ustawienia”.
Na karcie Zaawansowane możesz zobaczyć lokalizację obrazu dysku.
źródło
Środowisko: Windows 10 Pro, okno dokowane 2.0.3.0 edge
kliknij prawym przyciskiem myszy ikonę dokowania na pasku zadań, wybierz ustawienia - zaawansowane:
Lokalizacja obrazu dysku (edytowalna przez przeglądarkę):
C: \ Users \ Public \ Documents \ Hyper-V \ Virtual Hard Disks \ DockerDesktop.vhdx
(jest tam - katalog dokumentów jest ukryty)
źródło
docker build
polecenia?źródło
W Fedorze Docker używa LVM do przechowywania, jeśli jest dostępny. W moim systemie
docker info
pokazuje:W takim przypadku, aby zwiększyć pamięć, będziesz musiał użyć narzędzi wiersza poleceń LVM lub zgodnych menedżerów partycji, takich jak blivet .
źródło
W systemie Windows 2016 doker (DockerMsftProvider) używa folderu „windowsfilter” w katalogu głównym dokera
Do pobrania plików używa folderu „tmp” w katalogu głównym dokera, a następnie usuwa pliki po rozpakowaniu pobranych plików do folderu „windowsfilter”.
źródło
W Debianie Unstable / Sid,
docker info
znaleźć informacje o całym systemie.obrazy są przechowywane w
/var/lib/docker/image/overlay2/imagedb/content
ipojemniki są przechowywane w
/var/lib/docker/containers
wersja dokera, wersja
18.06.0-ce
API1.38
źródło
Nie mogłem rozwiązać problemu z Dockerem w wersji 18.09 na Macu, korzystając z powyższych odpowiedzi i spróbowałem ponownie.
Jedynym faktycznym rozwiązaniem dla mnie było użycie tej
docker-compose.yml
konfiguracji:Po uruchomieniu z
docker-compose up
ostatecznie/tmp/host-volume
udostępniono z makr jako wolumin do zapisu z kontenera:Mam nadzieję, że to pomaga również innym.
źródło
Obrazy są przechowywane wewnątrz,
/var/lib/docker
a następnie w odpowiednimstorage driver
katalogu.Używany sterownik pamięci można określić, wykonując
docker info
polecenie.źródło
Zgodnie z podręcznikiem Docker Pierwsze kroki „Twój wbudowany obraz” znajduje się w „lokalnym rejestrze obrazów Docker na twoim komputerze”.
To wciąż jest dla mnie dziwne, ponieważ teraz prowadzi do pytania. Gdzie jest lokalny rejestr obrazów Docker mojego komputera?
Niemniej jednak zdecydowanie uważam, że tę informację warto udostępnić jako odpowiedź.
źródło
Jeśli ktoś potrzebuje go do celów skryptowych, oto rozwiązanie jednowierszowe.
W powłoce POSIX, przy włączonym PCRE
grep
, spróbuj:DOCKER_ROOT_DIR="$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
W PowerShell:
$DOCKER_ROOT_DIR="$(docker info 2>&1 | foreach {if($_ -match "Docker Root Dir"){$_.TrimStart("Docker Root Dir: ")}})"
Uwaga: w systemie Windows 10 (od
10.0.18999.1
) w domyślnych konfiguracjach zwraca:C:\ProgramData\Docker
w trybie „Kontenery Windows”/var/lib/docker
, w trybie „Kontenery Linux”źródło
DOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')"
, ale ostatecznie jest to plik, a nie katalogsudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
wypisz zawartość tego katalogu.