Docker 이미지는 호스트 컴퓨터에 어디에 저장되어 있습니까?


874

directory에서 컨테이너를 찾을 /var/lib/docker/containers수 있었지만 이미지를 찾을 수 없습니다.

아래의 디렉토리와 파일은 /var/lib/docker무엇입니까?


2
그러한 경우 질문 제목 및 / 또는 질문 문에 운영 체제의 특정 사항을 명시하는 것이 가장 좋습니다. Linux와 macOS (Mac OS X)에 대해 두 가지 좋은 답변이 제공되었습니다.
Webel IT Australia-

답변:


637

/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>이제 jsonlayersize파일 에 이미지에 대한 메타 데이터 만 포함 됩니다.

의 경우 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 메타 데이터
  • 이러한 파일은 씬 프로비저닝 된 "스파 스"파일이므로 크기가 크지 않습니다.

1
어떤 식 으로든 내용물을 마운트하여 내용물을 볼 수 있습니까?
rv

1
스토리지 드라이버가 이미 실행 중이고 이미지가있는 일부 실행중인 컨테이너가있는 경우 스토리지 드라이버를 설정 한 경우 다음에 데몬을 다시 시작할 때 날짜가 마이그레이션됩니까? 그렇지 않은 경우이 경우 스토리지 드라이버를 수정하는 방법은 무엇입니까?
BTR Naidu


91
자신에게 호의를 베풀고 "기본값 확인"하지 마십시오. 사용 docker info및 실제 위치를 찾을 수 귀하의 설정에 특정을 .
Bruno Bronosky

5
이것은 변한 것 같습니다. Docker for Mac각각 1.5GB의 2 개 이미지를 사용 하고 /var/lib있으며 디렉토리가 없습니다 docker.
miguelmorin

298

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와 그 안에있는 모든 이미지와 컨테이너가 들어 있습니다.


7
이 모든 이미지 (같은의 위치입니다 ubuntu, nginx), 또는이 모든 컨테이너의 위치인가? 원래 질문은 컨테이너가 아닌 이미지를 요구합니다 ...
Siu Ching Pong -Asuka Kenji-

2
Docker가 여전히 VM에서 실행되고 있음을 명심하면 시스템 경로는 Mac Osx 시스템이 아니라 VM을 기준으로합니다. 이 명령을 시도하십시오 : docker run --rm -it -v / : / vm-root alpine : edge ls -l / vm-root nad이 후 : docker run --rm -it -v / : / vm-root alpine : edge ls -l / vm-root / var / lib / docker WM 호스트에서 docker 폴더를 나열 할 수 있습니다
user1842947

3
이것은 변한 것 같습니다. Docker for Mac각각 1.5GB의 두 이미지로 사용 하고 ~/Library/Containers/Data/com.docker.docker/Data디렉토리가 없으며 com.docker.driver.amd64-linux유일한 큰 파일은 vms/0/Docker.raw3.6GB입니다.
miguelmorin

1
qcow2 또는 raw의 사용 여부는 APFS 또는 그 이하의 MacOS High Sierra에 있는지 여부에 따라 다릅니다. docs.docker.com/docker-for-mac/faqs/#disk-usage
Peter

1
맥 크기 확인 :du -hd1 ~/Library/Containers/com.docker.docker/Data/
Efren

122

이것은 옛날 방식이었고 이제 바뀌 었습니다. 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 .

16
Windows 10에 Docker를 새로 설치 한 후 Docker 빠른 시작 터미널 바로 가기를 처음 클릭하면 'default'라는 가상 머신 (VM)이 생성됨을 확인할 수 있습니다 (몇 번 실패한 후-계속 실행할 때까지). 효과가있다). 이 '기본'VM은에 윈도우 내에서 찾을 수 있습니다 : %USERPROFILE%\.docker\machine\machines (경로에 마침표를 참고하시기 바랍니다)
AnotherLongUsername

6
최신 릴리스에서 boot2docker 는 이제 docker-machine입니다 . docs.docker.com/machine/migrate-to-machine
khylo를

3
그 위치를 바꿀 수 있습니까?
dhblah

13
대답은 더 이상 Windows 10에 맞지 않습니다. 대신 @tristan의 새로운 답변을 참조하십시오C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
aaronsteers

5
% USERPROFILE % \. docker는 여전히 win7 설정에 적합합니다.
RMorrisey

119

실제로 Docker 이미지는 다음 명령으로 표시된 것처럼 두 개의 파일에 저장됩니다

$ docker info

데이터 파일: /var/lib/docker/devicemapper/devicemapper/data

메타 데이터 파일 : /var/lib/docker/devicemapper/devicemapper/metadata



8
네, 불행히도이 두 줄 "(메타) 데이터 파일"이 모든 도커에 나타나는 것은 아닙니다. 사용 된 드라이버에 따라 다릅니다.
Orabîg

@DmitryYudin mirosval의 답변 은 최신 Docker for Mac에서 작동합니다 .
Franklin Yu

8
정답은 "이곳이 내 컴퓨터에있는 곳"이 아닙니다. 정답은 "여기 에서 컴퓨터에서 찾는 방법 "입니다. 이것은 정답입니다. 나는 도커 이미지로 가득 찬 11 가지 EBS 볼륨으로 회사에 합류했습니다. 이 답변을 통해 현재 "Root Dir" 이 무엇인지 알아낼 수있었습니다 .
Bruno Bronosky

Mac OS X (적어도 Yosemite (EOL wrt Docker))에서는 docker info매우 유용하지만 출력 Docker Root Dir: /var/lib/docker에 이미지 저장 위치가 표시되지 않습니다 (위의 Mac 관련 답변 참조).
Webel IT Australia-

70

Hyper-V를 사용하는 새로 출시 된 'Docker for Windows'에서 데이터는 Docker 가상 하드 디스크에 있습니다.

C : \ Users \ Public \ Documents \ Hyper-V \ Virtual hard disks \ MobyLinuxVM.vhdx

Docker / MobyLinuxVM에 액세스하기 위해 'Hyper-V 관리자'를 열 수도 있습니다.


13
Windows 10 Anniversary Update의 Docker는 이미지 파일을 C:\ProgramData\docker\windowsfilter제공합니다. 추가 정보 : stackoverflow.com/a/39971954/188740
Johnny Oshika

1
'Hyper-V 관리자'가 답입니다!
Reza

68

이미지는에 저장됩니다 /var/lib/docker/graph/<id>/layer.

이미지는 부모 이미지와 다릅니다. 부모 ID는 이미지의 메타 데이터와 함께 저장됩니다 /var/lib/docker/graph/<id>/json.

당신 docker run이 이미지. AUFS는 모든 계층을 하나의 사용 가능한 파일 시스템으로 '병합'합니다.


11
이 답변은 이제 구식입니다.
Air

7
@Air 이동 한 내용을 게시 할 수 있습니까?
Elijah Lynn

1
더 이상 그래프 폴더가 없습니다
Paddy

49

우분투에서는 실행중인 이미지로 "재생"할 수 있습니다

sudo baobab /var/lib/docker

실제로 이미지는 /var/lib/docker/aufs/diff

/ var / lib / docker에서 실행되는 디스크 분석기 도구 baobab을 보여주는 스크린 샷


참으로 좋습니다. Mac DaisyDisk는 비슷하지만 (휠 디스플레이) GrandPerspective도 유용합니다 (직사각형).
Webel IT Australia-upvoter

그것을 찾는 유일한 신뢰할 수있는 방법 인 것 같습니다.
Alexandr

48

Docker 도구 상자를 사용하는 사람 (docker-machine을 사용하는 사람)의 경우 Mac OS X의 boot2docker에 대한 답변이 유효하지 않습니다. docker-machine VM은 "default"라고하며 /Users/<username>/.docker/machine/machines/default/디렉토리에 있습니다.


3
해당 디렉토리에서 컨테이너 또는 이미지 폴더를 찾을 수 없습니다.
lvarayut

3
해당 디렉토리에서 disk.vmdk를 찾으십시오
lukeaus

1
$ docker images -a는 약 1 기가의 이미지를 생성하는 반면 ~ / .docker의 disk.vmdk는 약 20 기가입니다. 어떻게 오세요?
Grav

Windows에서 어디에 저장됩니까?
Shreyas

@Grav : 가상 머신은 나중에 사용하기 위해 20 기가를 할당하지만 이미지에는 1 기가 만 사용합니다.
primavera133

22

에서 Windows 용 도커 (기본 Windows) 기본 컨테이너 저장에 있습니다 :

   > docker info
   ...
   Docker Root Dir: C:\ProgramData\Docker
   ...

docker build명령을 실행했는데 이미지 파일이라고 생각되는 파일이 표시되지 않습니다. 폴더와 텍스트 파일 (예 : service.txt)이 있습니다. 어떤 유형의 파일 및 어떤 파일 확장자를 사용하여 docker build생성합니까?
user3731622

22

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나는 이미지를 발견했다. 그러나 그것은 컨테이너가 아닙니다. 이 데이터 디렉토리에서 실제로 보지 마십시오 ..
rhand

1
그러나 여기에 앞서 언급 한 바와 같이 stackoverflow.com/a/37642236/460885 는 컨테이너가있는이 이미지 안에 있습니다.
rhand

7

여기 에 답변 된 것처럼 Mac을 사용하는 경우

/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

2
Docker.qcow2? 특정 도커 이미지를 가져 오는 방법은 무엇입니까?
AlxVallejo

7

Tristan의 답변을 확장하여 Hyper-V가 설치된 Windows에서는 matthuisman에서 다음 단계 를 통해 이미지를 이동할 수 있습니다 .

Windows 10에서는

  1. 도커 등 정지
  2. 작업 표시 줄 검색 상자에 "Hyper-V 관리자"를 입력하고 실행하십시오.
  3. 왼쪽 창에서 PC를 선택하십시오 (내 이름은 DESKTOP-CBP **입니다).
  4. 올바른 가상 머신을 마우스 오른쪽 버튼으로 클릭하십시오 (내 이름은 MobyLinuxVM).
  5. "끄기"를 선택하십시오 (실행중인 경우).
  6. 다시 마우스 오른쪽 버튼을 클릭하고 "이동"을 선택하십시오
  7. 프롬프트를 따르십시오

2
이렇게하면 이미지가 아닌 Hyper-V 시스템 만 이동하며 이미지는 여전히 VHD 위치에 저장됩니다.
olive_tree 2012

@olive_tree docker build명령으로 만든 이미지를 찾으려고합니다 . 저는 Windows 10 컴퓨터에 있습니다. C : \ Users \ Public \ Documents \ Hyper-V \ Virtual 하드 디스크를 보면 MobyLinuxVM.vhdx입니다. 실제 이미지는 어디에 저장됩니까?
user3731622

5

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 폴더를 나열 할 수 있습니다


감사! 이것은 Hyper-v가 설치된 Windows 10에서 나를 위해 일한 유일한 대답입니다. elusive / var / lib / docker / overlay2 폴더에서 손상된 파일을 정리할 수있었습니다.
알리 Cheaito

4

Mac OSX에서 Docker에 boot2docker를 사용하므로 이미지가에 저장됩니다 /Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk.


4

이 질문에 대한 답변은 우분투 사용자에게만 가능합니다.

docker의 루트 디렉토리는 명령을 실행할 때 찾을 수 있습니다 docker info

Docker 디렉토리는 다음 줄에 제공됩니다 : " Docker Root Dir: /var/lib/docker"

도커 이미지에 대해서는 도커 디렉토리 안에 저장됩니다. /var/lib/docker/aufs/diff/

이러한 사항은 모든 버전의 도커에서 동일하지는 않습니다. 현재 1.12.3을 사용하고 있습니다.


4

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"]]

3

Windows 용 Docker에서 로그는 다음과 같습니다. %USERPROFILE%\AppData\Local\Docker


3

에서 docker 폴더를 확인하십시오. /var/lib

이미지는 아래 위치에 저장됩니다.

/var/lib/docker/image/overlay2/imagedb/content

4
여기에는 sha256 폴더 만 있습니다
toto '

나는 당신이 단순히 다음을 의미한다고 생각합니다 /var/lib/docker/image/overlay2/.. 또한 Docker 엔진이 overlay2스토리지 드라이버로 사용 중이기 때문 입니다.
Guy Avraham

3

docker inspect container_id
MergedDir에서 찾기 폴더 사용

# example. 
"MergedDir": "/var/lib/docker/overlay2/f40cc2ea8912ec3b32deeef5a1542a132f6e918acb/merged 

3

"Docker Desktop"의 경우 docker 시스템 트레이 아이콘을 클릭하고 "Settings"를 클릭하십시오. 여기에 이미지 설명을 입력하십시오

고급 탭에서 디스크 이미지 위치를 볼 수 있습니다.

여기에 이미지 설명을 입력하십시오


2

환경 : Windows 10 Pro, docker desktop 2.0.3.0 edge

시스템 트레이에서 도커 아이콘을 마우스 오른쪽 버튼으로 클릭하고 설정-고급을 선택하십시오.

디스크 이미지 위치 (브라우저를 통해 편집 가능) :

C : \ Users \ Public \ Documents \ Hyper-V \ Virtual Hard Disks \ DockerDesktop.vhdx

(있어요-문서 디렉토리가 숨겨져 있습니다)


C : \ Users \ Public \ Documents \ Hyper-V \ Virtual Hard Disks \ DockerDesktop.vhdx는 docker build명령으로 만든 이미지 입니까?
user3731622


1

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 와 같은 호환 가능한 파티션 관리자를 사용해야 합니다.


1

Windows 2016에서 docker (DockerMsftProvider)는 docker root 아래의 "windowsfilter"폴더를 사용합니다.

>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...

docker root 아래의 "tmp"폴더를 사용하여 파일을 다운로드하고 다운로드 한 파일을 "windowsfilter"폴더로 추출한 후 파일을 삭제합니다.


0

데비안 불안정 / Sid에서

docker info 시스템 전체 정보를 찾습니다.

이미지가 저장됩니다 /var/lib/docker/image/overlay2/imagedb/content

컨테이너는 /var/lib/docker/containers

도커 버전 18.06.0-ce, API 버전1.38


0

위의 답변을 사용하여 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

이것이 다른 사람들에게도 도움이되기를 바랍니다.


0

이미지는 /var/lib/docker적용 가능한 내부 및 아래에 저장됩니다storage driver 디렉토리 .

사용중인 스토리지 드라이버는 docker info명령 을 실행하여 확인할 수 있습니다 .


0

Docker 시작 안내서 에 따르면 "내장 이미지"는 "컴퓨터의 로컬 Docker 이미지 레지스트리에 있습니다."

여기에 이미지 설명을 입력하십시오

이것은 여전히 ​​나에게 이상합니다. 이제는 질문으로 이어지기 때문입니다. 내 컴퓨터의 로컬 Docker 이미지 레지스트리는 어디에 있습니까?

그럼에도 불구하고, 나는이 정보가 답으로 공유 할 가치가 있다고 생각합니다.


하하 TBH 나는 이것이 최대 코멘트라고 생각합니다. 그래도 좋은 의견이 될 것입니다!
Mong H. Ng

0

누구나 스크립팅 목적으로 필요한 경우 한 줄 솔루션이 있습니다.

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 컨테이너"모드에서

CentOS에서는을 사용해야 DOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')"했지만 결국에는 파일이 아니라 디렉토리입니다.
HairOfTheDog

디렉토리가 아닙니까? 나를 sudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"위해이 디렉토리의 내용을 나열하십시오.
vulcan raven
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.