programing

호스트 시스템에서 도커 이미지는 어디에 저장됩니까?

easyjava 2023. 10. 1. 23:07
반응형

호스트 시스템에서 도커 이미지는 어디에 저장됩니까?

는 에 있는 찾았습니다./var/lib/docker/containers.

입니까상의 입니까?/var/lib/docker?

은 내용./var/lib/docker디렉토리는 Docker가 스토리지에 사용하는 드라이버에 따라 달라집니다.

은 가 .aufs하지만 다시 돌아갈 수 있습니다.overlay,overlay2,btrfs,devicemapper아니면zfs커널 지원 여부에 따라 변경할 수 있습니다.e니다.aufs하지만 레드햇은 같이 갔습니다.

또는 옵션을 사용하여 저장소 드라이버를 수동으로 도커 데몬으로 설정할 수 있습니다.

  • /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
  • 이 파일들은 씬 프로비저닝된 "희소" 파일이므로 보이는 것만큼 크지 않습니다.

Mac Application용 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 info

:/var/lib/docker/devicemapper/devicemapper/data

:/var/lib/docker/devicemapper/devicemapper/metadata

이것은 옛날 방식이었고, 지금은 변했습니다.2019년 현재 이 답변 무시

Mac OS X 또는 윈도우즈의 특수한 경우 boot2docker를 사용하면 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 .

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

C:\Users\Public\문서\Hyper-V\가상 하드 디스크\MobyLinuxVM.vhdx

도커 / 모비 리눅스 VM에 액세스하기 위해 'Hyper-V Manager'를 열 수도 있습니다.

은 됩니다./var/lib/docker/graph/<id>/layer.

이미지는 상위 이미지와 다를 뿐입니다.모 ID됩니다./var/lib/docker/graph/<id>/json.

이 할 때.docker run상감 AUFS는 을 하나의 한 파일 합니다AUFS는 모든 계층을 하나의 사용 가능한 파일 시스템으로 '병합'합니다.

Ubuntu에서는 이미지를 실행하여 "재생"할 수 있습니다.

sudo baobab /var/lib/docker

는 , 됩니다 에 저장됩니다./var/lib/docker/aufs/diff

screenshot showing disk analyzer tool baobab running on /var/lib/docker

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

윈도우즈용 도커(원본 윈도우즈)에서 기본 컨테이너 저장소는 다음과 같습니다.

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

도커(MAC ())를boot2docker는 )입니다. /Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/

sudo docker info | grep -e "Root Dir"

여기서 답변한 대로 Mac을 사용하는 경우 다음 위치에 있습니다.

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

Tristan의 답변을 확대하면 Windows with Hyper-V에서는 matuisman의 다음 단계로 이미지를 이동할 수 있습니다.

윈도우 10에서는.

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

명령을 사용하여 시스템 전반에 걸친 정보를 표시할 수 있으며 위치는 달라질 수 있습니다.

사용 중인 스토리지 드라이버에 따라 풀 이름, 데이터 파일, 메타데이터 파일, 사용한 데이터 공간, 총 데이터 공간, 사용한 메타데이터 공간, 총 메타데이터 공간 등의 추가 정보를 표시할 수 있습니다.

데이터 파일은 이미지가 저장되는 곳이고 메타데이터 파일은 해당 이미지에 대한 메타데이터가 저장되는 곳입니다.때때 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 Desktop(도커 데스크톱)"의 경우 도커 시스템 트레이 아이콘을 클릭하고 "Settings(설정)"을 클릭합니다.

enter image description here

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

enter image description here

사용하다docker inspect container_id

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

도커가 여전히 VM에서 실행 중이라는 점을 염두에 둔다면 시스템 경로는 Mac OSx 시스템이 아니라 VM과 상대적인 경로입니다.모든 것이 VM 파일에 포함되어 있다고 합니다.

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

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

도커 실행 --rm -it -v /:/vm-root alpine:edge ls -l /vm-root

이 후에는 다음을 시도해 보기만 하면 됩니다.

도커 실행 --rm -it -v /:/vm-root alpine:edge ls -l /vm-root /var /lib / docker

이제 VM 호스트에서 도커 폴더를 나열할 수 있습니다.

는 맥 가 에서 를됩니다 boot2docker 에 저장됩니다./Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk.

는 Windows Docker 에서입니다.%USERPROFILE%\AppData\Local\Docker

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

수 .docker info

는 "됩니다"Docker Root Dir: /var/lib/docker"

(/var/lib/docker/aufs/diff/

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

합니다에서 합니다./var/lib

영상은 아래 위치에 저장됩니다.

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

ENV

OS:fedora 29 x86_64 workstation

도커:

[user@localhost ~]$ docker --version
Docker version 19.03.5, build 633a0ea838

:"DockerVersion": "18.09.7"


은 ./var/lib/docker/overlay2


나의 예

이미지 표시:

[user@localhost ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
neo4j               latest              8ed7463b8476        12 months ago       548MB
hello-world         latest              fce289e99eb9        2 years ago         1.84kB

이미지 사이즈는 548M 입니다.

8ed7463b8476.

[user@localhost ~]$ docker image inspect 8ed7463b8476
... ... ... ...

"DockerVersion": "18.09.7",

... ... ... ...

"GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2
/66dc24704d7ea5f1a5dee0bf4a5297cb78bcbd0d4b36206b8cca62cd4de7f2b1/diff:
/var/lib/docker/overlay2
/5ab91cf721359d43d01038233d397fd9ed1c4b3857c0c7d9a2dd7f2ac5eccad0/diff:
/var/lib/docker/overlay2
/e82fdf7ee3e37db0a11d9ca309245ae852425d24d6f5d3313dcf604cdddb397b/diff:
/var/lib/docker/overlay2
/9394543085d467010d0468fffb388e5616a89e2cf16c1c2b7b31aee4e542ae69/diff:
/var/lib/docker/overlay2
/c7c7a16e3dbaeea1a3a3b0bbca39f34f08f6b8ab15d753e6e68f9851c80d95b4/diff:
/var/lib/docker/overlay2
/3b470afdf8939b45159f3171f0bef2a27085b4b980e09f0c666fbdc58b944d97/diff:
/var/lib/docker/overlay2
/463ba63f79eb6b2f5466e7b71041bc346a8e9c4ebddd34d23422c719824a2340/diff",

... ... ... ...

이 폴더들의 크기를 보겠습니다.

[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/66dc24704d7ea5f1a5dee0bf4a5297cb78bcbd0d4b36206b8cca62cd4de7f2b1
141M    /var/lib/docker/overlay2/66dc24704d7ea5f1a5dee0bf4a5297cb78bcbd0d4b36206b8cca62cd4de7f2b1
[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/5ab91cf721359d43d01038233d397fd9ed1c4b3857c0c7d9a2dd7f2ac5eccad0/
28K /var/lib/docker/overlay2/5ab91cf721359d43d01038233d397fd9ed1c4b3857c0c7d9a2dd7f2ac5eccad0/
[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/e82fdf7ee3e37db0a11d9ca309245ae852425d24d6f5d3313dcf604cdddb397b/
100K    /var/lib/docker/overlay2/e82fdf7ee3e37db0a11d9ca309245ae852425d24d6f5d3313dcf604cdddb397b/
[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/9394543085d467010d0468fffb388e5616a89e2cf16c1c2b7b31aee4e542ae69/
310M    /var/lib/docker/overlay2/9394543085d467010d0468fffb388e5616a89e2cf16c1c2b7b31aee4e542ae69/
[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/c7c7a16e3dbaeea1a3a3b0bbca39f34f08f6b8ab15d753e6e68f9851c80d95b4/
36K /var/lib/docker/overlay2/c7c7a16e3dbaeea1a3a3b0bbca39f34f08f6b8ab15d753e6e68f9851c80d95b4/
[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/3b470afdf8939b45159f3171f0bef2a27085b4b980e09f0c666fbdc58b944d97/
9.5M    /var/lib/docker/overlay2/3b470afdf8939b45159f3171f0bef2a27085b4b980e09f0c666fbdc58b944d97/
[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/463ba63f79eb6b2f5466e7b71041bc346a8e9c4ebddd34d23422c719824a2340/
76M /var/lib/docker/overlay2/463ba63f79eb6b2f5466e7b71041bc346a8e9c4ebddd34d23422c719824a2340/

우리는 548M에 가까운 사이즈를 볼 수 있습니다.

출력 파일에 이미지를 저장할 수도 있습니다.

[user@localhost ~]$ docker save -o neo4j.image.tar 8ed7463b8476
[user@localhost ~]$ du -sh neo4j.image.tar 
528M    neo4j.image.tar

우리는 패키지 파일을 추출할 수 있고 패키지 안에 있는 파일의 크기를 확인할 수 있습니다.

[user@localhost neo4j.image]$ du -sh *
16K 2f0dd5fb60a940719a3e781133611cc64c2acded03bd47e04b0997fd0c1dae50
8.7M    73819037a38eabeb7c622533e4058c84f5ff106475a1aba78a278f8b36c172f7
309M    8d31d715b324a2ae3ccb1577e981d492f40e34db6371f0858da925ef02b5762e
12K 8ed7463b84760f09b1b86a732ee6f295baaadffe72ce4fdb7ad306fe5e096bbb.json
36K 966e726ff1d9be9dca68014cda6f1ecf974365c553b82ea3834fff5d73ea593e
70M a32776b9621e916e8714389b1037bf47253a2d3d1c806ad515623d2150c92485
60K d82868a318b95466f213136f81cd7258518744da72f46ca51b04b35f2351f46a
16K e62169d79fab44bebb0a455b01af5f636bace7673a1d38fc092daad77d51cd0e
141M    fe8014622f7933e178b9005deffda3eb4828703eb7eca93b5485232930e3916b
4.0K    manifest.json

우리는 또한 그 폴더를 보관할 수 있습니다./var/lib/docker/overlay2/이미지 파일과 패키지 크기를 비교합니다.사이즈도 이미지 사이즈에 가깝습니다.

더 유용한 판독값:

도커 이미지 - GraphDriver의 병합/diff/work/LowerDir 구성 요소,

도커 이미지는 어디에 저장됩니까? 도커 컨테이너 경로 설명,

파일 시스템 오버레이

환경: Windows 10 Pro, 도커 데스크톱 2.0.3.0 엣지

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

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

C:\Users\Public\문서\Hyper-V\가상 하드 디스크\DockerDesktop.vhdx

(거기에 있습니다 - 문서 디렉토리가 숨겨져 있습니다.

페도라에서 도커는 사용 가능한 경우 스토리지에 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 명령줄 도구나 블리벳과 같은 호환되는 파티션 관리자를 사용해야 합니다.

Windows 2016에서 도커(DockerMsftProvider)는 도커 루트 아래에 "windowfilter" 폴더를 사용합니다.

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

도커 루트 아래에 있는 "tmp" 폴더를 사용하여 파일을 다운로드하고 다운로드한 파일을 "windowfilter" 폴더로 압축을 푼 후 파일을 삭제합니다.

2021년 macOS에서 가능한 유일한 솔루션은 bash를 통해 도커 VM에 액세스한 후 로컬 구조를 확인하는 것입니다.

  1. docker run -ti --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
  2. cd /var/lib/docker/

천만에요!

사용하다docker info저장 경로를 포함한 도커의 호스트 설정을 가져오는 명령.

도커 저장소의 루트 경로만 가져오려면 다음을 사용할 수 있습니다.

docker info | grep 'Docker Root Dir:' | cut -d':' -f2 | sed 's/^ *//g'

는 기본 에 해당합니다.Ubuntu 22.04그리고.docker --version=Docker version 20.10.17, build 100c701경로를 설치합니다.

/var/lib/docker

해당 디렉토리의 내용을 다음 명령으로 크기와 함께 나열합니다.

du -h -d 1 .

결과(기타 디렉토리)를 제공합니다.

444K    ./buildkit
4,0K    ./containers
4,0K    ./runtimes
16K     ./plugins
4,0K    ./trust
4,0K    ./tmp
100K    ./network
22M     ./image
2,0G    ./volumes
4,0K    ./swarm
9,0G    ./overlay2

중 를 할 수 .sed 끝에sed 's/$/\/image/g' 위해/image

명령:

docker info | grep 'Docker Root Dir:' | cut -d':' -f2 | sed 's/^ *//g' | sed 's/$/\/image/g'

다음을 제공:

/var/lib/docker/image

명령:

docker info | grep 'Docker Root Dir:' | cut -d':' -f2 | sed 's/^ *//g' | sed 's/$/\/overlay2/g'

다음을 제공:

/var/lib/docker/overlay2

설명할 수 있는 것처럼 수 은 되지 않습니다.image디렉토리(22M 크기) 대신 이미지의 정보입니다./var/lib/docker/image/overlay2e의 /var/lib/docker/image/overlay2/repositories.json.overlay2겹겹이 쌓아올

해당 는 () 의됩니다./var/lib/docker/overlay29,0G즈)

에 .overlay2이미지의 무거운 데이터가 저장되는 곳에는 도커가 사용하는 계층화 시스템이 있지만 이 계층화 시스템은 도커가 (현재 또는 미래에) 사용할 수 있는 많은 시스템 중 하나입니다.따라서 하드 코딩된 경로를 기준으로 하면 깨지기 쉬울 수 있습니다.

특히 이미지를 파일로 내보내거나 저장하려는 경우 전용 명령어를 찾아야 합니다.

도커에서 저장과 내보내기의 차이점은 무엇입니까?

위의 질문에서 나온 명령을 사용하면 이미지를 모두 하나의 파일에 저장하고 압축한 다음 한 번의 명령으로 다른 곳으로 가져올 수도 있습니다.

백업 생성을 위해 도커 경로를 고수하려면 항상 루트 경로를 사용하는 것이 좋습니다.

/var/lib/docker

에 의해 docker info 수 command다.

/var/lib/docker/volumes

예를 들어 데이터를 유지하기 위해 볼륨을 사용하는 데이터베이스 이미지에 의해 요구됩니다.

데비안 불안정/시드에서

docker info시스템 전반에 걸친 정보를 찾을 수 있습니다.

이미지는 다음 위치에 저장 위치/var/lib/docker/image/overlay2/imagedb/content그리고.

는 합니다./var/lib/docker/containers

18.06.0-ce, API 1.38

위 답변들을 이용하여 macos에서 Docker version 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

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

는 됩니다 됩니다./var/lib/docker 적용 가능한에 따라요storage driver디렉토리 입니다.

를(를) 할 수 .docker info지휘.

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

반응형