development

Docker 이미지는 호스트 머신에서 어디에 저장됩니까?

big-blog 2020. 9. 29. 08:03
반응형

Docker 이미지는 호스트 머신에서 어디에 저장됩니까?


디렉토리 아래에서 컨테이너를 찾을 /var/lib/docker/containers수 있었지만 이미지를 찾을 수 없습니다.

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


/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 메타 데이터
  • 이러한 파일은 씬 프로비저닝 된 "스파 스"파일이므로 보이는 것만 큼 크지 않습니다.

Mac 애플리케이션 용 Docker를 사용하는 경우 컨테이너가 다음 위치에있는 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 디스크와 그 안의 모든 이미지 및 컨테이너가 포함됩니다.


Mac OS X 또는 Windows의 특수한 경우 boot2docker를 사용하면 Docker 이미지가 boot2docker에서 관리하는 VirtualBox VM에 저장됩니다.

이 VM은 VirtualBox 이미지의 일반적인 위치에 저장됩니다.

      OS X : ~/VirtualBox VMs/boot2docker-vm

      Windows : %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 .

실제로 Docker 이미지는 다음 명령과 같이 두 개의 파일에 저장됩니다.

$ docker info

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

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


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

이미지는 상위 이미지와 다를뿐입니다. 상위 ID는 이미지의 메타 데이터와 함께 저장됩니다 /var/lib/docker/graph/<id>/json.

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


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

C : \ Users \ Public \ Documents \ Hyper-V \ Virtual 하드 디스크 \ MobyLinuxVM.vhdx

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


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


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

sudo baobab /var/lib/docker

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

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


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

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

Docker for MAC (아님 boot2docker)을 사용하는 경우 위치는/Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/


여기 에서 대답했듯이 Mac을 사용하는 경우 다음 위치에 있습니다.

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

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

Windows 10에서는

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

Mac OSX의 Docker에 boot2docker를 사용하므로 이미지가 /Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk.


Ubuntu 사용자에게만이 질문에 답할 수 있습니다.

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

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

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

이러한 것들이 모든 버전의 도커에서 동일하지는 않다는 것을 기억하십시오. 현재 1.12.3을 사용하고 있습니다.


Docker가 여전히 VM에서 실행되고 있다는 점을 염두에두면 시스템 경로는 Mac Osx 시스템이 아닌 VM에 상대적입니다. 모든 것이 VM 파일에 포함되어 있다고 말합니다.

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

이 볼륨 옵션과 VM 호스트를 나열 할 수있는 ls 명령을 사용하여 Alpine 이미지를 실행 해보십시오.

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

이제 WM 호스트에서 docker 폴더를 나열 할 수 있습니다.


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


도커 폴더를 확인하십시오. /var/lib

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

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

docker info명령을 사용 하여 시스템 전체 정보를 표시하고 위치는 다를 수 있습니다.

사용중인 스토리지 드라이버에 따라 풀 이름, 데이터 파일, 메타 데이터 파일, 사용 된 데이터 공간, 총 데이터 공간, 사용 된 메타 데이터 공간 및 총 메타 데이터 공간과 같은 추가 정보가 표시 될 수 있습니다.

데이터 파일은 이미지가 저장되는 위치이고 메타 데이터 파일은 해당 이미지와 관련된 메타 데이터가 저장되는 위치입니다. Docker를 처음 실행할 때 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"]]

환경 : Windows 10 Pro, docker desktop 2.0.3.0 edge

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

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

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

(거기-문서 디렉토리가 숨겨져 있음)


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


Debian Unstable / Sid에서

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

images are stored at /var/lib/docker/image/overlay2/imagedb/content and

containers are stored at /var/lib/docker/containers

docker version 18.06.0-ce, API version 1.38


In Windows 2016, docker (DockerMsftProvider) uses the folder "windowsfilter" under docker root

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

It uses the "tmp" folder under docker root to download the files and it deletes the files after extracting the downloaded files to "windowsfilter" folder.


I couldn't resolve the question with Docker version 18.09 on macos using the above answers and tried again.

The only actual solution for me was using this docker-compose.yml configuration:

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

After launching with docker-compose up I finally had /tmp/host-volume from macos shared as writeable volume from within the container:

> 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

Hope this helps others too.


Images are stored inside /var/lib/docker and then under applicable storage driver directory.

Storage driver, being used, can be determined by executing docker info command.


According to the Docker Getting Started guide "your built image" is "in your machine’s local Docker image registry."

여기에 이미지 설명 입력

This is still strange to me, because now it leads to the question. Where is my machine's local Docker image registry?

Nevertheless, I definitely think this info is worth sharing as an answer.


use docker inspect container_id
find folder under MergedDir

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

For "Docker Desktop", click on docker system tray icon and click "Settings". 여기에 이미지 설명 입력

On the Advanced tab, you can see the disk image location.

여기에 이미지 설명 입력

참고URL : https://stackoverflow.com/questions/19234831/where-are-docker-images-stored-on-the-host-machine

반응형