답변:
/var/lib/docker
디렉토리 의 내용은 Docker가 저장에 사용 하는 드라이버 에 따라 다릅니다 .
기본적으로이 될 것입니다 aufs
하지만 다시 떨어질 수 overlay
, overlay2
, btrfs
, devicemapper
또는 zfs
커널 지원에 따라 달라집니다. 대부분의 장소에서 이것은 aufs
있지만 RedHats는 함께 갔다devicemapper
.
-s
또는--storage-driver=
옵션을 사용하여 스토리지 드라이버를 Docker 데몬 으로 수동 설정할 수 있습니다 .
/var/lib/docker/{driver-name}
이미지 내용에 대한 드라이버 별 저장소가 포함됩니다. /var/lib/docker/graph/<id>
이제 json
및 layersize
파일 에 이미지에 대한 메타 데이터 만 포함 됩니다.의 경우 aufs
:
/var/lib/docker/aufs/diff/<id>
이미지의 파일 내용이 있습니다./var/lib/docker/repositories-aufs
로컬 이미지 정보가 포함 된 JSON 파일입니다. 이것은 명령으로 볼 수 있습니다 docker images
.의 경우 devicemapper
:
/var/lib/docker/devicemapper/devicemapper/data
이미지를 저장/var/lib/docker/devicemapper/devicemapper/metadata
메타 데이터docker info
및 실제 위치를 찾을 수 귀하의 설정에 특정을 .
Docker for Mac
각각 1.5GB의 2 개 이미지를 사용 하고 /var/lib
있으며 디렉토리가 없습니다 docker
.
Docker for Mac Application을 사용할 때 컨테이너는 다음 위치의 VM 내에 저장되어있는 것으로 보입니다.
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
업데이트 ( mmorin의 제공 ) :
2019 년 1 월 15 일 현재이 파일 만있는 것 같습니다.
~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw
Docker Disk와 그 안에있는 모든 이미지와 컨테이너가 들어 있습니다.
ubuntu
, nginx
), 또는이 모든 컨테이너의 위치인가? 원래 질문은 컨테이너가 아닌 이미지를 요구합니다 ...
Docker for Mac
각각 1.5GB의 두 이미지로 사용 하고 ~/Library/Containers/Data/com.docker.docker/Data
디렉토리가 없으며 com.docker.driver.amd64-linux
유일한 큰 파일은 vms/0/Docker.raw
3.6GB입니다.
du -hd1 ~/Library/Containers/com.docker.docker/Data/
이것은 옛날 방식이었고 이제 바뀌 었습니다. 2019 년 기준으로이 답변을 무시
Mac OS X 또는 Windows의 특별한 경우 boot2docker를 사용하면 Docker 이미지가 boot2docker가 관리하는 VirtualBox VM 내에 저장됩니다.
이 VM은 VirtualBox 이미지의 일반적인 위치에 저장됩니다.
OS X : ~/VirtualBox VMs/boot2docker-vm
윈도우 : %USERPROFILE%/VirtualBox VMs/boot2docker-vm
다음을 실행하여 재설정 할 수 있습니다 (경고 : 지금까지 빌드 및 다운로드 한 모든 이미지가 삭제됩니다).
boot2docker down
boot2docker destroy
boot2docker init
boot2docker up
유용한 --rm 옵션을 사용하지 않고 빌드를 빌드 / 디버깅 할 때 수많은 중간 이미지를 유지 한 경우 특히 유용합니다.
docker build -t webapp --rm=true --force-rm=true .
대신에:
docker build -t webapp .
%USERPROFILE%\.docker\machine\machines
(경로에 마침표를 참고하시기 바랍니다)
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
실제로 Docker 이미지는 다음 명령으로 표시된 것처럼 두 개의 파일에 저장됩니다
$ docker info
데이터 파일:
/var/lib/docker/devicemapper/devicemapper/data
메타 데이터 파일 :
/var/lib/docker/devicemapper/devicemapper/metadata
docker info
매우 유용하지만 출력 Docker Root Dir: /var/lib/docker
에 이미지 저장 위치가 표시되지 않습니다 (위의 Mac 관련 답변 참조).
Hyper-V를 사용하는 새로 출시 된 'Docker for Windows'에서 데이터는 Docker 가상 하드 디스크에 있습니다.
C : \ Users \ Public \ Documents \ Hyper-V \ Virtual hard disks \ MobyLinuxVM.vhdx
Docker / MobyLinuxVM에 액세스하기 위해 'Hyper-V 관리자'를 열 수도 있습니다.
C:\ProgramData\docker\windowsfilter
제공합니다. 추가 정보 : stackoverflow.com/a/39971954/188740
이미지는에 저장됩니다 /var/lib/docker/graph/<id>/layer
.
이미지는 부모 이미지와 다릅니다. 부모 ID는 이미지의 메타 데이터와 함께 저장됩니다 /var/lib/docker/graph/<id>/json
.
당신 docker run
이 이미지. AUFS는 모든 계층을 하나의 사용 가능한 파일 시스템으로 '병합'합니다.
우분투에서는 실행중인 이미지로 "재생"할 수 있습니다
sudo baobab /var/lib/docker
실제로 이미지는 /var/lib/docker/aufs/diff
Docker 도구 상자를 사용하는 사람 (docker-machine을 사용하는 사람)의 경우 Mac OS X의 boot2docker에 대한 답변이 유효하지 않습니다. docker-machine VM은 "default"라고하며 /Users/<username>/.docker/machine/machines/default/
디렉토리에 있습니다.
에서 Windows 용 도커 (기본 Windows) 기본 컨테이너 저장에 있습니다 :
> docker info
...
Docker Root Dir: C:\ProgramData\Docker
...
docker build
명령을 실행했는데 이미지 파일이라고 생각되는 파일이 표시되지 않습니다. 폴더와 텍스트 파일 (예 : service.txt)이 있습니다. 어떤 유형의 파일 및 어떤 파일 확장자를 사용하여 docker build
생성합니까?
Docker for MAC (not not boot2docker
)을 사용하는 경우 위치는/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
나는 이미지를 발견했다. 그러나 그것은 컨테이너가 아닙니다. 이 데이터 디렉토리에서 실제로 보지 마십시오 ..
여기 에 답변 된 것처럼 Mac을 사용하는 경우
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
Tristan의 답변을 확장하여 Hyper-V가 설치된 Windows에서는 matthuisman에서 다음 단계 를 통해 이미지를 이동할 수 있습니다 .
Windows 10에서는
- 도커 등 정지
- 작업 표시 줄 검색 상자에 "Hyper-V 관리자"를 입력하고 실행하십시오.
- 왼쪽 창에서 PC를 선택하십시오 (내 이름은 DESKTOP-CBP **입니다).
- 올바른 가상 머신을 마우스 오른쪽 버튼으로 클릭하십시오 (내 이름은 MobyLinuxVM).
- "끄기"를 선택하십시오 (실행중인 경우).
- 다시 마우스 오른쪽 버튼을 클릭하고 "이동"을 선택하십시오
- 프롬프트를 따르십시오
docker build
명령으로 만든 이미지를 찾으려고합니다 . 저는 Windows 10 컴퓨터에 있습니다. C : \ Users \ Public \ Documents \ Hyper-V \ Virtual 하드 디스크를 보면 MobyLinuxVM.vhdx입니다. 실제 이미지는 어디에 저장됩니까?
Docker가 여전히 VM에서 실행되고 있음을 명심하면 시스템 경로는 Mac Osx 시스템이 아니라 VM을 기준으로합니다. 그것은 모두 VM 파일에 포함되어 있습니다 :
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
이 볼륨 옵션과 ls 명령으로 Alpine 이미지를 실행하여 VM 호스트를 나열 할 수 있습니다.
docker run --rm -it -v / : / vm-root alpine : edge ls -l / vm-root
이 후에 그냥 시도하십시오 :
docker run --rm -it -v / : / vm-root alpine : edge ls -l / vm-root / var / lib / docker
이제 VM 호스트에서 docker 폴더를 나열 할 수 있습니다
docker info
시스템 전체 정보를 표시 하려면 명령을 사용하십시오 . 위치는 다를 수 있습니다.
사용중인 스토리지 드라이버에 따라 풀 이름, 데이터 파일, 메타 데이터 파일, 사용 된 데이터 공간, 총 데이터 공간, 사용 된 메타 데이터 공간 및 총 메타 데이터 공간과 같은 추가 정보가 표시 될 수 있습니다.
데이터 파일은 이미지가 저장되는 위치이고 메타 데이터 파일은 해당 이미지와 관련된 메타 데이터가 저장되는 위치입니다. Docker는 처음 실행될 때
/var/lib/docker
마운트 된 볼륨에서 사용 가능한 공간에서 일정량의 데이터 공간과 메타 데이터 공간을 할당합니다 .
Ubuntu에 대한 예는 다음과 같습니다 ( root Dir 확인 ).
$ 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
...
다음은 Travis CI의 예입니다 ( Docker Root Dir 참조 ).
$ docker info
Server Version: 17.09.0-ce
Storage Driver: overlay2
Backing Filesystem: extfs
...
Docker Root Dir: /var/lib/docker
...
--format
매개 변수를 사용 하여 해당 정보를 단일 파일로 추출 할 수 있습니다 ( 예 :
$ docker info --format '{{.DriverStatus}}'
[[Root Dir /var/snap/docker/common/var-lib-docker/aufs] [Backing Filesystem extfs] [Dirs 265] [Dirperm1 Supported true]]
또는:
$ docker info --format '{{json .DriverStatus}}'
[["Root Dir","/var/snap/docker/common/var-lib-docker/aufs"],["Backing Filesystem","extfs"],["Dirs","265"],["Dirperm1 Supported","true"]]
에서 docker 폴더를 확인하십시오. /var/lib
이미지는 아래 위치에 저장됩니다.
/var/lib/docker/image/overlay2/imagedb/content
/var/lib/docker/image/overlay2/
.. 또한 Docker 엔진이 overlay2
스토리지 드라이버로 사용 중이기 때문 입니다.
환경 : Windows 10 Pro, docker desktop 2.0.3.0 edge
시스템 트레이에서 도커 아이콘을 마우스 오른쪽 버튼으로 클릭하고 설정-고급을 선택하십시오.
디스크 이미지 위치 (브라우저를 통해 편집 가능) :
C : \ Users \ Public \ Documents \ Hyper-V \ Virtual Hard Disks \ DockerDesktop.vhdx
(있어요-문서 디렉토리가 숨겨져 있습니다)
docker build
명령으로 만든 이미지 입니까?
Fedora에서 Docker는 사용 가능한 경우 LVM 을 사용 하여 저장합니다. 내 시스템에서 다음을 docker info
보여줍니다.
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
...
이 경우 스토리지를 늘리려면 LVM 명령 줄 도구 또는 blivet 와 같은 호환 가능한 파티션 관리자를 사용해야 합니다.
Windows 2016에서 docker (DockerMsftProvider)는 docker root 아래의 "windowsfilter"폴더를 사용합니다.
>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...
docker root 아래의 "tmp"폴더를 사용하여 파일을 다운로드하고 다운로드 한 파일을 "windowsfilter"폴더로 추출한 후 파일을 삭제합니다.
위의 답변을 사용하여 macos에서 Docker 버전 18.09로 질문을 해결할 수 없으며 다시 시도하십시오.
나를위한 유일한 실제 솔루션은이 docker-compose.yml
구성 을 사용하는 것입니다 .
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
로 시작한 후 docker-compose up
마침내 /tmp/host-volume
컨테이너 내에서 쓰기 가능한 볼륨으로 macos를 공유했습니다.
> 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
이것이 다른 사람들에게도 도움이되기를 바랍니다.
Docker 시작 안내서 에 따르면 "내장 이미지"는 "컴퓨터의 로컬 Docker 이미지 레지스트리에 있습니다."
이것은 여전히 나에게 이상합니다. 이제는 질문으로 이어지기 때문입니다. 내 컴퓨터의 로컬 Docker 이미지 레지스트리는 어디에 있습니까?
그럼에도 불구하고, 나는이 정보가 답으로 공유 할 가치가 있다고 생각합니다.
누구나 스크립팅 목적으로 필요한 경우 한 줄 솔루션이 있습니다.
POSRE 셸에서 PCRE가 활성화 된 상태 grep
에서 다음을 시도하십시오.
DOCKER_ROOT_DIR="$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
PowerShell에서 :
$DOCKER_ROOT_DIR="$(docker info 2>&1 | foreach {if($_ -match "Docker Root Dir"){$_.TrimStart("Docker Root Dir: ")}})"
Windows 10 (현재 10.0.18999.1
)의 기본 구성에서는 다음을 반환합니다.
C:\ProgramData\Docker
"Windows 컨테이너"모드/var/lib/docker
"Linux 컨테이너"모드에서DOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')"
했지만 결국에는 파일이 아니라 디렉토리입니다.
sudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
위해이 디렉토리의 내용을 나열하십시오.