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
?
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
?
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 powrotem overlay
, overlay2
, btrfs
, devicemapper
lub zfs
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 plikach json
i layersize
.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ą polecenia docker images
.W przypadku devicemapper
:
/var/lib/docker/devicemapper/devicemapper/data
przechowuje obrazy/var/lib/docker/devicemapper/devicemapper/metadata
metadanedocker 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 katalogu docker
.
Podczas korzystania z aplikacji Docker dla komputerów Mac wydaje się, że kontenery są przechowywane w maszynie wirtualnej znajdującej się pod adresem:
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
AKTUALIZACJA (dzięki uprzejmości mmorin ):
Według stanu na 15 stycznia 2019 r. Wydaje się, że jest tylko ten plik:
~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw
który zawiera Docker Disk oraz wszystkie zawarte w nim obrazy i kontenery.
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 ma vms/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ś):
boot2docker down
boot2docker destroy
boot2docker init
boot2docker up
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:
docker build -t webapp --rm=true --force-rm=true .
zamiast:
docker build -t webapp .
%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
$ docker info
Plik danych:
/var/lib/docker/devicemapper/devicemapper/data
Plik metadanych:
/var/lib/docker/devicemapper/devicemapper/metadata
docker info
jest bardzo przydatny, ale dane wyjściowe Docker 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:
C: \ Users \ Public \ Documents \ Hyper-V \ Wirtualne dyski twarde \ MobyLinuxVM.vhdx
Możesz także otworzyć Menedżera funkcji Hyper-V, aby uzyskać dostęp do Docker / MobyLinuxVM.
C:\ProgramData\docker\windowsfilter
dla mnie pliki obrazów . Więcej informacji: stackoverflow.com/a/39971954/188740
Obrazy 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.
W Ubuntu możesz „grać” z uruchomionymi obrazami
sudo baobab /var/lib/docker
W rzeczywistości obrazy są przechowywane w /var/lib/docker/aufs/diff
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.
W Docker dla Windows (macierzysty Windows) domyślna pamięć kontenerów to:
> docker info
...
Docker Root Dir: C:\ProgramData\Docker
...
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 rozszerzeniem docker build
tworzy?
Jeśli używasz Dockera dla MAC (nie boot2docker
), to lokalizacja to/Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/
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
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
Rozwijając odpowiedź Tristana, w systemie Windows za pomocą funkcji Hyper-V możesz przenieść obraz, wykonując następujące kroki z Matthuisman:
W systemie Windows 10
- Zatrzymaj dokera itp
- Wpisz „Menedżer funkcji Hyper-V” w polu wyszukiwania paska zadań i uruchom go.
- Wybierz komputer w lewym panelu (mój nazywa się DESKTOP-CBP **)
- Kliknij prawym przyciskiem myszy odpowiednią maszynę wirtualną (moja nazywa się MobyLinuxVM)
- Wybierz „Wyłącz” (jeśli jest uruchomiony)
- Kliknij ponownie prawym przyciskiem myszy i wybierz „Przenieś”
- Postępuj zgodnie z instrukcjami
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:
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
Spróbuj uruchomić obraz Alpine przy użyciu tej opcji woluminu i polecenia ls, aby wyświetlić listę hosta VM:
docker run --rm -it -v /: / vm-root alpine: edge ls -l / vm-root
Następnie spróbuj:
docker run --rm -it -v /: / vm-root alpine: edge ls -l / vm-root / var / lib / docker
Teraz możesz wyświetlić folder dokera z hosta maszyny Wirtualnej
Używam boot2docker dla Docker na Mac OSX, więc obrazy są przechowywane w /Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk
.
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.
Użyj docker info
polecenia, aby wyświetlić informacje systemowe, a lokalizacja może się różnić.
W zależności od używanego sterownika pamięci masowej mogą zostać wyświetlone dodatkowe informacje, takie jak nazwa puli, plik danych, plik metadanych, wykorzystana przestrzeń danych, łączna przestrzeń danych, wykorzystana przestrzeń metadanych i całkowita przestrzeń metadanych.
Plik danych to miejsce, w którym przechowywane są obrazy, a plik metadanych to miejsce, w którym przechowywane są metadane dotyczące tych obrazów. Przy pierwszym uruchomieniu Docker przydziela pewną ilość miejsca na dane i miejsce na meta z miejsca dostępnego na woluminie, w którym
/var/lib/docker
jest zamontowany.
Oto przykład Ubuntu (sprawdź katalog główny ):
$ docker info
...
Server Version: 18.06.1-ce
Storage Driver: aufs
Root Dir: /var/snap/docker/common/var-lib-docker/aufs
...
Docker Root Dir: /var/snap/docker/common/var-lib-docker
...
A oto przykład na Travis CI (patrz katalog Docker Root Dir ):
$ docker info
Server Version: 17.09.0-ce
Storage Driver: overlay2
Backing Filesystem: extfs
...
Docker Root Dir: /var/lib/docker
...
Możesz użyć --format
parametru, aby wyodrębnić te informacje do jednego pliku, np
$ docker info --format '{{.DriverStatus}}'
[[Root Dir /var/snap/docker/common/var-lib-docker/aufs] [Backing Filesystem extfs] [Dirs 265] [Dirperm1 Supported true]]
lub:
$ docker info --format '{{json .DriverStatus}}'
[["Root Dir","/var/snap/docker/common/var-lib-docker/aufs"],["Backing Filesystem","extfs"],["Dirs","265"],["Dirperm1 Supported","true"]]
sprawdź folder dokera w /var/lib
obrazy są przechowywane w poniższej lokalizacji:
/var/lib/docker/image/overlay2/imagedb/content
/var/lib/docker/image/overlay2/
. Należy również pamiętać, że dzieje się tak z powodu faktu, że silnik Docker używa overlay2
jako sterownika pamięci masowej.
Ś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)
docker build
polecenia?
W Fedorze Docker używa LVM do przechowywania, jeśli jest dostępny. W moim systemie docker info
pokazuje:
Storage Driver: devicemapper
Pool Name: vg01-docker--pool
Pool Blocksize: 524.3 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file:
Metadata file:
Data Space Used: 9.622 GB
...
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 .
W systemie Windows 2016 doker (DockerMsftProvider) używa folderu „windowsfilter” w katalogu głównym dokera
>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...
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”.
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:
version: '3.7'
...
services:
demo-service:
volumes:
- data-volume:/var/tmp/container-volume
volumes:
data-volume:
driver: local
driver_opts:
type: none
o: bind
device: /tmp/host-volume
Po uruchomieniu z docker-compose up
ostatecznie /tmp/host-volume
udostępniono z makr jako wolumin do zapisu z kontenera:
> docker exec -it 1234 /bin/bash
bash-4.4$ df
Filesystem 1K-blocks Used Available Use% Mounted on
...
osxfs 488347692 464780044 21836472 96% /var/tmp/container-volume
Mam nadzieję, że to pomaga również innym.
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ź.
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”DOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')"
, ale ostatecznie jest to plik, a nie katalog
sudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
wypisz zawartość tego katalogu.