programing

도커/오버레이 2/를 청소해도 안전합니까?

muds 2023. 8. 29. 21:00
반응형

도커/오버레이 2/를 청소해도 안전합니까?

AWS EC2에서 실행 중인 도커 컨테이너가 있는데, /var/lib/docker/overlay2 폴더의 디스크 크기가 매우 빠르게 증가합니다.

내용을 삭제해도 안전한지 궁금합니다.도커가 디스크 사용량을 줄이기 위한 명령을 가지고 있는지도 모릅니다.


업데이트:

저는 사실 노력했습니다.docker system prune -a이미 0Kb를 회수했습니다.

가 /docker/overlay2 디스크 .docker system df

도커 설명서와 BMitch의 답변을 읽은 후 이 폴더를 터치하는 것은 어리석은 생각이라고 생각하며 디스크 공간을 회수하는 다른 방법을 시도해 보겠습니다.

도커는 /var/lib/docker를 사용하여 이미지, 컨테이너 및 로컬 명명된 볼륨을 저장합니다.이를 삭제하면 데이터가 손실되고 엔진 작동이 중지될 수 있습니다.overlay2 하위 디렉터리에는 특히 이미지 및 컨테이너에 대한 다양한 파일 시스템 계층이 포함되어 있습니다.

사용하지 않는 컨테이너 및 이미지를 정리하려면 을 참조하십시오.docker system prune볼륨 및 태그가 지정된 이미지를 제거하는 옵션도 있지만 데이터 손실 가능성 때문에 기본적으로 활성화되지 않습니다.

$ docker system prune --help

Usage:  docker system prune [OPTIONS]

Remove unused data

Options:
  -a, --all             Remove all unused images not just dangling ones
      --filter filter   Provide filter values (e.g. 'label=<key>=<value>')
  -f, --force           Do not prompt for confirmation
      --volumes         Prune volumes

자르기에서 삭제하지 않는 내용은 다음과 같습니다.

  • 중인 용기 」 「 」 「 」 「 」 「 」 「 」와 나열)docker ps)
  • 해당 컨테이너의 로그(로그 크기 제한에 대한 자세한 내용은 이 게시물 참조)
  • 해당 변경 사항(으로 표시됨)docker diff)

또한 일반 도커 폴더 외부에서 생성된 모든 항목은 가비지 수집 중 도커에 의해 표시되지 않을 수 있습니다.이는 이 디렉터리에 쓰는 다른 앱이나 도커 엔진의 이전 구성(예: AUFS에서 오버레이2로 전환하거나 사용자 네임스페이스를 활성화한 후)일 수 있습니다.

이 조언이 무시되고 overlay2와 같은 단일 폴더를 이 파일 시스템에서 삭제하면 어떻게 됩니까?계층 되며, 중 " 컨너파시일며은템파조테되립스다일서이템에음, overlay2"의 출력에서 확인할 수 있습니다).mount(컨테이너가 실행 중일 때).사용 중일 때 이들 중 일부를 삭제하면 실행 중인 컨테이너에서 파일 시스템 청크가 삭제되고 영향을 받는 이미지에서 새 컨테이너를 시작하는 기능이 손상될 수 있습니다.가능한 많은 결과 중 하나를 보려면 질문을 참조하십시오.


도커를 깨끗한 상태로 완전히 새로 고치려면 overlay2와 같은 하위 디렉터리뿐만 아니라 전체 디렉터리를 삭제할 수 있습니다.

# danger, read the entire text around this code before running
# you will lose data
sudo -s
systemctl stop docker
rm -rf /var/lib/docker
systemctl start docker
exit

엔진이 완전히 비어 있는 상태에서 재시동됩니다. 즉, 다음과 같은 모든 기능을 잃게 됩니다.

  • 이미지들
  • 용기
  • 명명된 책들
  • 사용자가 생성한 네트워크
  • 군집 상태

저는 이것이 저에게 가장 효과적이라는 것을 알았습니다.

docker image prune --all

기본적으로 도커는 이름이 지정된 이미지를 사용하지 않더라도 제거하지 않습니다.이 명령은 사용되지 않는 이미지를 제거합니다.

의 각 는 이지의각내폴더다니입부 안에 입니다./usr/lib/docker/overlay2/폴더를 누릅니다.

이런 문제가 있었어요그것은 거대한 통나무였습니다.로그 위치:

/var/lib/docker/containers/<container id>/<container id>-json.log

실행 명령줄 또는 작성 파일에서 이를 관리할 수 있습니다.로그 드라이버 구성을 참조하십시오.

저는 개인적으로 도커-compose.yml 파일에 다음 세 줄을 추가했습니다.

my_container:
  logging:
    options:
      max-size: 10m

또한 빠르게 성장하는 것에 문제가 있었습니다.overlay2

/var/lib/docker/overlay2도커가 컨테이너에 대한 쓰기 가능한 계층을 저장하는 폴더입니다.docker system prune -a용기가 중지 및 제거된 경우에만 작동할 수 있습니다.

나는 내 안에 들어가서 무엇이 공간을 소비하는지 알아낼 수 있었습니다.overlay2조사하고 있습니다.

해당 폴더에 다른 해시 명명된 폴더가 포함되어 있습니다.각 폴더에는 다음과 같은 여러 폴더가 있습니다.diff폴더를 누릅니다.

difffolder - 에는 - 18 folder - unbu 18...).

그래서 저는 제 컨테이너 안에 오염된 폴더가 있다는 것을 알아내곤 했습니다.

으로 그서해으사로용니다습했결책래다니▁so습'를 사용했습니다.-v /tmp/container-data/tmp:/tmp 대 매 변 수 개 한 수의 매개 변수입니다.docker run/tmp호스트할 폴더 및 해당 폴더를 정리하기 위해 호스트에 cron을 설정합니다.

cron 작업은 간단했습니다.

  • sudo nano /etc/crontab
  • */30 * * * * root rm -rf /tmp/container-data/tmp/*
  • save and exit

참고:overlay2시스템 도커 폴더이며 언제든지 구조를 변경할 수 있습니다.위의 모든 것은 제가 그 안에서 본 것을 기반으로 합니다.시스템 공간이 완전히 부족해서 도커 폴더 구조로 들어가야 했고 도커 컨테이너에 SSH를 넣을 수도 없었습니다.

배경

이 문제에 대한 책임은 컨테이너 볼륨의 잘못된 구성과 도커가 이러한 볼륨에 기록된 임시 데이터를 유출(해제하지 못함)하는 문제로 나눌 수 있습니다.애플리케이션이 자주 또는 많이 기록되는 컨테이너의 임시/로그/스크래치 폴더를 모두 매핑(호스트 폴더 또는 기타 영구 스토리지 클레임)해야 합니다.으로 EmptyDirs에 생성된 . 기본적으로/var/lib/docker/overlay2/*/diff/*이러한 "비영구적" 폴더의 내용은 컨테이너가 중지된 후 도커에 의해 자동으로 제거되어야 하지만 실제로는 그렇지 않습니다(컨테이너가 계속 실행 중인 경우 호스트 측에서 제거하는 것이 불가능할 수도 있습니다. 한 번에 몇 달 동안 실행될 수도 있습니다).

해결 방법

해결 방법은 신중한 수동 정리가 필요하며, 이미 다른 곳에서 설명했지만 가능한 한 유용하고 일반화할 수 있도록 사례 연구에서 힌트를 찾을 수 있습니다.

앱에는 서일나일은난경다우범앱니입인의그어)입니다.clair-scanner)는 몇 에 걸쳐 를 몇달에수기의데수있다작니었습성할를이에 쓸 수 /diff/tmpoverlay2

du -sch /var/lib/docker/overlay2/<long random folder name seen as bloated in df -haT>/diff/tmp

271G total

의모하폴마로찬에 있는 모든 처럼./diff/tmp꽤 자기 규제적이었습니다 (모두 형태였습니다).clair-scanner-* 더 사용되지 날짜가 ), 컨테이너를 했습니다.docker stop clair 에서 되지 않는 했습니다.diff/tmp 것으로 엔진에 미치는 합니다. 했던 [재기동] [systemctl restart docker 공간을 다음과 같이 하십시오.

rm -rf $(ls -at /var/lib/docker/overlay2/<long random folder name seen as bloated in df -haT>/diff/tmp | grep clair-scanner | tail -1)

도커를 다시 설치하거나 전체 폴더를 정리할 필요 없이 수백 기가바이트의 Disk 공간을 재확보했습니다.Disk 공간을 회수하려면 도커 데몬을 다시 시작해야 했기 때문에 실행 중인 모든 컨테이너를 한 시점에서 중지해야 했습니다. 먼저 페일오버 컨테이너가/다른 노드에서 올바르게 실행되고 있는지 확인하십시오.하지만 나는 희망합니다.docker prune명령은 사용되지 않는 항목을 포함할 수 있습니다./diff/tmp 짝수)/diff/*(다른 스위치를 통해) 데이터도 포함됩니다.

현재 3년 된 문제이며, 도커 포럼에서 풍부하고 다채로운 역사를 읽을 수 있습니다. 도커 포럼에서는 위 솔루션의 애플리케이션 로그를 목표로 하는 변형이 2019년에 제안되었으며 여러 설정에서 작동한 것으로 보입니다. https://forums.docker.com/t/some-way-to-clean-up-identify-contents-of-var-lib-docker-overlay/30604

시스템이 이미지를 빌드하는 데도 사용되는 경우 다음을 사용하여 작성자가 생성한 쓰레기를 정리할 수 있습니다.

docker buildx prune --all

그리고.

docker builder prune --all

친구들, 모든 것을 깨끗하게 유지하기 위해 명령 해제를 사용할 수 있습니다.

docker system prune -a && docker volume prune

경고: 생산 시스템에서 사용하지 마십시오.

/# df
...
/dev/xvda1      51467016 39384516   9886300  80% /
...

좋아요, 먼저 시스템 제거를 시도해 보겠습니다.

#/ docker system prune --volumes
...
/# df
...
/dev/xvda1      51467016 38613596  10657220  79% /
...

별로 좋지 않습니다, 몇 메가바이트를 청소한 것 같습니다.이제 미쳐버리자구요.

/# sudo su
/# service docker stop
/# cd /var/lib/docker
/var/lib/docker# rm -rf *
/# service docker start
/var/lib/docker# df
...
/dev/xvda1      51467016 8086924  41183892  17% /
...

좋습니다! 일회용 서버 이외에는 권장되지 않습니다.이 시점에서 Docker의 내부 데이터베이스는 이러한 오버레이를 찾을 수 없으며 의도하지 않은 결과를 초래할 수 있습니다.

사람들이 일반적인 대들보 볼륨, 이미지, 종료 컨테이너 등과 같은 시스템을 제거할 것을 제안하는 위의 의견에 추가합니다. 앱이 원인이 될 때가 있습니다. 그리고 빈 디렉터리 볼륨(로컬 볼륨)을 사용하면 /var 파티션을 채웁니다.이 경우 아래 명령어는 제 /var 파티션 디스크의 공간을 소비하는 것이 무엇인지 알아내는 데 매우 흥미롭습니다.

du -ahx /var/lib | sort -rh | head -n 30

이 명령은 단일 디스크에서 대부분의 공간을 사용하는 상위 30개를 나열합니다.즉, 컨테이너와 함께 외부 저장소를 사용하는 경우 du 명령을 실행하는 데 많은 시간이 소요됩니다.이 명령은 마운트 볼륨을 계산하지 않습니다.그리고 훨씬 빠릅니다.공간을 사용하는 정확한 디렉터리/파일을 얻을 수 있습니다.그런 다음 디렉터리로 이동하여 어떤 파일이 유용한지 확인할 수 있습니다. 필요한 경우 앱을 변경하여 해당 위치에 영구 저장소를 사용하거나 해당 파일의 위치를 변경하여 영구 저장소로 이동할 수 있습니다.그리고 휴식을 위해 당신은 그것들을 치울 수 있습니다.

, "공적인답변", "으로청소식"로 prune, 실로를에서 치료하지 않습니다.overlay2폴더를 누릅니다.

따라서 원래 질문에 답하기 위해 수행할 수 있는 작업은 다음과 같습니다.

고지 사항:이것을 바를 때 주의하세요.도커 개체가 손상될 수 있습니다!

  • 이름을 더이해(으)로 합니다.overlay2
  • 필요한 도커 개체(이미지, 컨테이너 등)를 검사합니다(정지된 컨테이너 또는 현재 컨테이너 내부에 없는 이미지는 필요하지 않음을 의미합니다.
  • 검사할 때 다음을 포함하여 개체와 관련된 해시를 제공합니다.overlay2의 폴더.
  • grep그에 반대하여overlay2의 폴더
  • 에서 모든폴노트로 검색된 모든 합니다.grep
  • 은 다폴삭수있다니습제의 할 수 .overlay2필요한 도커 개체에 의해 참조되지 않습니다.

예:

예를 들어 이러한 폴더가 내부에 있다고 가정합니다.overlay2 파일 이름,

a1b28095041cc0a5ded909a20fed6dbfbcc08e1968fa265bc6f3abcc835378b5
021500fad32558a613122070616963c6644c6a57b2e1ed61cb6c32787a86f048

그리고 당신이 가지고 있는 것은 ID가 있는 하나의 이미지뿐입니다.c777cf06a6e3.

그런 다음 다음을 수행합니다.

docker inspect c777cf06a6e3 | grep a1b2809
docker inspect c777cf06a6e3 | grep 021500

첫 번째 명령은 무엇인가를 발견했지만 두 번째 명령은 아무것도 발견하지 못했다고 상상해 보십시오.

그런 다음 0215를 삭제할 수 있습니다...의 입니다.overlay2:

rm -r 021500fad32558a613122070616963c6644c6a57b2e1ed61cb6c32787a86f048

질문 제목에 답하기

  • 예, dxdirect overlay2 폴더를 사용하지 않는 경우 해당 폴더를 직접 삭제하는 것이 안전합니다.
  • 아니요, 사용 중이거나 확실하지 않은 경우 직접 삭제하는 것은 안전하지 않습니다.

운영 환경에서 이 작업을 수행하지 마십시오.

@ravi-luthra가 제시한 대답은 기술적으로 효과가 있지만 몇 가지 문제가 있습니다!

제 경우에는 디스크 공간을 복구하려고 했을 뿐입니다.lib/docker/overlay폴더는 30GB의 공간을 차지하고 있었고 저는 몇 개의 컨테이너만 정기적으로 실행하고 있습니다.도커가 데이터 유출에 문제가 있고 컨테이너가 정지할 때 일부 임시 데이터가 지워지지 않는 것 같습니다.

그래서 저는 계속해서 모든 내용을 삭제했습니다.lib/docker/overlay폴더를 누릅니다.그 이후로 내 도커 인스턴스는 사용할 수 없게 되었습니다.컨테이너를 실행하거나 만들 때 다음 오류가 발생했습니다.

failed to create rwlayer: symlink ../04578d9f8e428b693174c6eb9a80111c907724cc22129761ce14a4c8cb4f1d7c/diff /var/lib/docker/overlay2/l/C3F33OLORAASNIYB3ZDATH2HJ7: no such file or directory

그리고 약간의 시행착오를 겪으면서, 저는 이 문제를 실행함으로써 해결했습니다.

(경고: 도커 볼륨 내의 모든 데이터가 삭제됩니다.)

docker system prune --volumes -a

따라서 시스템의 작동 방식을 완전히 이해하지 않는 한 이러한 더러운 청소를 하지 않는 것이 좋습니다.

Mert Mertce답변을 바탕으로 스피너와 프로그레스바로 완성된 다음 스크립트를 작성했습니다.

그러나 스크립트를 작성한 이후로 빌드 서버의 추가 디렉터리가 일시적이라는 것을 알게 되었습니다. 즉, Docker가 천천히 정리하는 것처럼 보입니다.디렉터리 제거에 대한 논쟁이 있다면 도커가 화를 낼지 모르겠습니다.현재 솔루션은 추가 오버헤드(150GB 이상)가 많은 문서를 사용하는 것입니다.

#!/bin/bash
[[ $(id -u) -eq 0 ]] || exec sudo /bin/bash -c "$(printf '%q ' "$BASH_SOURCE" "$@")"
progname=$(basename $0)
quiet=false
no_dry_run=false
while getopts ":qn" opt
do
    case "$opt" in
      q)
          quiet=true
          ;;
      n)
          no_dry_run=true
          ;;
      ?)
          echo "unexpected option ${opt}"
          echo "usage: ${progname} [-q|--quiet]"
          echo "    -q: no output"
          echo "    -n: no dry run (will remove unused directories)"
          exit 1
          ;;
    esac
done
shift "$(($OPTIND -1))"

[[ ${quiet} = false ]] || exec /bin/bash -c "$(printf '%q ' "$BASH_SOURCE" "$@")" > /dev/null

echo "Running as: $(id -un)"

progress_bar() {
    local w=80 p=$1;  shift
    # create a string of spaces, then change them to dots
    printf -v dots "%*s" "$(( $p*$w/100 ))" ""; dots=${dots// /.};
    # print those dots on a fixed-width space plus the percentage etc.
    printf "\r\e[K|%-*s| %3d %% %s" "$w" "$dots" "$p" "$*";
}

cd /var/lib/docker/overlay2
echo cleaning in ${PWD}
i=1
spi=1
sp="/-\|"
directories=( $(find . -mindepth 1 -maxdepth 1 -type d | cut -d/ -f2) )
images=( $(docker image ls --all --format "{{.ID}}") )
total=$((${#directories[@]} * ${#images[@]}))
used=()
for d in "${directories[@]}"
do
    for id in ${images[@]}
    do
        ((++i))
        progress_bar "$(( ${i} * 100 / ${total}))" "scanning for used directories ${sp:spi++%${#sp}:1} "
        docker inspect $id | grep -q $d
        if [ $? ]
        then
            used+=("$d")
            i=$(( $i + $(( ${#images[@]} - $(( $i % ${#images[@]} )) )) ))
            break
        fi
    done
done
echo -e "\b\b " # get rid of spinner
i=1
used=($(printf '%s\n' "${used[@]}" | sort -u))
unused=( $(find . -mindepth 1 -maxdepth 1 -type d | cut -d/ -f2) )
for d in "${used[@]}"
do
    ((++i))
    progress_bar "$(( ${i} * 100 / ${#used[@]}))" "scanning for unused directories ${sp:spi++%${#sp}:1} "
    for uni in "${!unused[@]}"
    do
        if [[ ${unused[uni]} = $d ]]
        then
            unset 'unused[uni]'
            break;
        fi
    done
done
echo -e "\b\b " # get rid of spinner
if [ ${#unused[@]} -gt 0 ]
then
    [[ ${no_dry_run} = true ]] || echo "Could remove:  (to automatically remove, use the -n, "'"'"no-dry-run"'"'" flag)"
    for d in "${unused[@]}"
    do
        if [[ ${no_dry_run} = true ]]
        then
            echo "Removing $(realpath ${d})"
            rm -rf ${d}
        else
            echo " $(realpath ${d})"
        fi
    done
    echo Done
else
    echo "All directories are used, nothing to clean up."
fi

저 같은 경우에는.systemctl stop docker그리고나서systemctl start docker으로 여유 공간이 생깁니다./var/lib/docker/*

이미지와 볼륨으로 잘라내는 것이 제게는 효과가 없었습니다.

먼저 디스크 공간이 사용되는지 확인합니다.ncdu에서 릴레이할 수 있습니다. 제가 전달할 수 있는 최고의 디스크 공간 유틸리티 CLI입니다.디렉토리별 사용 공간이 표시되며 파일 시스템을 관리하는 데 유용한 내장 컨트롤이 많이 있습니다.이것은 어떤 특정 프로세스와 디렉터리가 더 많은 메모리를 차지하는지에 대한 공정한 아이디어를 제공합니다.

sudo ncdu -x /var 

도커로 돌아가면, 도커가 더 많은 디스크 공간을 필요로 한다는 것을 확신할 수 있습니다.제거를 시도할 수 있으며 제거가 치료되지 않는 경우 아래 명령을 사용하여 매달린 볼륨을 지우십시오.사용 중인 컨테이너나 볼륨은 삭제되지 않습니다.

docker volume rm $(docker volume ls -qf dangling=true)

또한 표준 방법으로 컨테이너 로그를 제한합니다.기본적으로 도커는 컨테이너 로그를 무제한으로 저장합니다. 파일Docker Daemon 구성 파일)에서할 수 ./etc/docker/daemon.json예를 들어 다음 행을 추가하여 컨테이너 로그를 50MB로 제한할 수 있습니다.daemon onedaemon.json 파일을 할 수 .

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m"
  }
}

데몬 구성 파일을 변경한 후 sudo service docker restart 명령을 사용하여 Docker 데몬을 다시 시작해야 합니다.

저도 같은 문제가 있었습니다. 제 경우에는 "var/lib/docker" 디렉터리가 실행 중인 컨테이너(구글/cadvisor의 경우)에 마운트되었기 때문입니다. 따라서 도커 제거를 차단하여 폴더를 정리할 수 없었습니다.컨테이너를 중지하고 도커 제거를 실행한 다음 컨테이너를 다시 실행하면 문제가 해결되었습니다.

나는 overlay2가 들어 있는 폴더로 이동했습니다.용사를 합니다.du -shc overlay2/*저는 오버레이2에 25G의 정크가 있다는 것을 발견했습니다. 중입니다.docker system prune -af말했습니다Total Reclaimed Space: 1.687MB그래서 저는 그것이 그것을 치우는 데 실패했다고요.하지만, 나는 그 다음에 달렸습니다.du -shc overlay2/*다시 한 번 말하지만 overlay2에는 80K만 들어 있어서 작동했습니다.

조심해, 도커 거짓말:).

/var/lib/docker의 모든 항목은 컨테이너의 파일 시스템입니다.모든 컨테이너를 중지하고 잘라낸 경우 폴더가 비어 있어야 합니다.여러분은 아마 그것을 정말 원하지 않을 것입니다. 그러니 그 안에 있는 것들을 무작위로 삭제하지 마세요./var/lib/docker의 항목을 직접 삭제하지 마십시오.당신은 가끔 그것을 피할 수 있지만, 많은 이유로 그것은 충고할 수 없습니다.

대신 이 작업을 수행합니다.

sudo bash
cd /var/lib/docker
find . -type f | xargs du -b  | sort -n

하단에 표시된 가장 큰 파일이 표시됩니다. 있는지 에 원는경, 우파어컨에있너는테확지인다다입같니력은합컨음를테너이과고하하이떤일이▁those▁withers▁if▁enter▁contain다입니▁are합력,ers▁you▁those컨,▁figure▁files▁want▁contain원▁out같를테,▁in은▁what를 입력합니다.docker exec -ti containername -- /bin/sh일부 파일을 삭제합니다.

당신은 또한 넣을 수 있습니다.docker system prune -a -f사용자가 관심 있는 주변의 중지된 컨테이너 및 볼륨을 남기지 않는 한 일일/주간 cron 작업에서 사용할 수 있습니다.성장하는 이유를 파악하여 컨테이너 수준에서 수정하는 것이 좋습니다.

도커는 컨테이너를 실행하기 위해 이전 버전 이미지의 이미지 계층을 유지하는 것으로 보입니다.실행 중인 컨테이너의 이미지(동일한 태그)를 중지하지 않고 업데이트하면 다음과 같이 발생할 수 있습니다.

docker-compose pull
docker-compose up -d

중입니다.docker-compose down업데이트가 해결되기 전에 다운타임은 문제가 되지 않습니다.

저는 최근에 비슷한 문제가 있었습니다. 오버레이2가 점점 커졌습니다. 하지만 무엇이 공간의 대부분을 차지하는지 알 수 없었습니다.

df약 을 보여주었습니다. overlay2는 24GB입니다.

와 함께du저는 무엇이 공간을 차지하는지 알아내려고 노력했지만 실패했습니다.

차이점은 프로세스(Docker)에서 여전히 사용 중인 파일(내 경우 대부분 로그 파일)을 삭제했다는 점입니다.따라서 파일이 표시되지 않습니다.du은 하만그것차공보간것입여다니줄은는지하지이▁it로 표시될 입니다.df.

호스트 시스템 재부팅이 도움이 되었습니다.도커 컨테이너를 다시 시작하는 것이 이미 도움이 되었을 것입니다.linuxquestions.org 의 이 기사는 가 그것을 이해하는 데 도움이 되었습니다.

문제가 당신은 이 폴더의 . 결과를 사용하지 마십시오.df -h하여 각합니다.아래 명령을 사용하여 각 폴더의 크기를 확인합니다.

echo; pwd; echo; ls -AlhF; echo; du -h --max-depth=1; echo; du-sh

overlay2 디렉토리가 꽉 찬 이유는 컨테이너 중 하나에 로그 레코드가 있기 때문입니다.적어도 내 도커는 그랬습니다.도커 스톱 앤드 스타트는 이 문제를 해결하지만 일시적인 해결책입니다.로그를 닫거나 컨테이너가 매일 다시 시작됩니다.

다음 명령을 사용하여 컨테이너로 덮인 영역을 볼 수 있습니다.

du -sh /var/lib/docker/containers/*
docker system prune -af && docker image prune -af

"docker system prune -a"를 사용하여 볼륨 및 오버레이 아래의 모든 파일을 정리했습니다.2

    [root@jasontest volumes]# docker system prune -a
    WARNING! This will remove:
            - all stopped containers
            - all networks not used by at least one container
            - all images without at least one container associated to them
            - all build cache
    Are you sure you want to continue? [y/N] y
    Deleted Images:
    untagged: ubuntu:12.04
    untagged: ubuntu@sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005
    deleted: sha256:5b117edd0b767986092e9f721ba2364951b0a271f53f1f41aff9dd1861c2d4fe
    deleted: sha256:8c7f3d7534c80107e3a4155989c3be30b431624c61973d142822b12b0001ece8
    deleted: sha256:969d5a4e73ab4e4b89222136eeef2b09e711653b38266ef99d4e7a1f6ea984f4
    deleted: sha256:871522beabc173098da87018264cf3e63481628c5080bd728b90f268793d9840
    deleted: sha256:f13e8e542cae571644e2f4af25668fadfe094c0854176a725ebf4fdec7dae981
    deleted: sha256:58bcc73dcf4050a4955916a0dcb7e5f9c331bf547d31e22052f1b5fa16cf63f8
    untagged: osixia/openldap:1.2.1
    untagged: osixia/openldap@sha256:6ceb347feb37d421fcabd80f73e3dc6578022d59220cab717172ea69c38582ec
    deleted: sha256:a562f6fd60c7ef2adbea30d6271af8058c859804b2f36c270055344739c06d64
    deleted: sha256:90efa8a88d923fb1723bea8f1082d4741b588f7fbcf3359f38e8583efa53827d
    deleted: sha256:8d77930b93c88d2cdfdab0880f3f0b6b8be191c23b04c61fa1a6960cbeef3fe6
    deleted: sha256:dd9f76264bf3efd36f11c6231a0e1801c80d6b4ca698cd6fa2ff66dbd44c3683
    deleted: sha256:00efc4fb5e8a8e3ce0cb0047e4c697646c88b68388221a6bd7aa697529267554
    deleted: sha256:e64e6259fd63679a3b9ac25728f250c3afe49dbe457a1a80550b7f1ccf68458a
    deleted: sha256:da7d34d626d2758a01afe816a9434e85dffbafbd96eb04b62ec69029dae9665d
    deleted: sha256:b132dace06fa7e22346de5ca1ae0c2bf9acfb49fe9dbec4290a127b80380fe5a
    deleted: sha256:d626a8ad97a1f9c1f2c4db3814751ada64f60aed927764a3f994fcd88363b659
    untagged: centos:centos7
    untagged: centos@sha256:2671f7a3eea36ce43609e9fe7435ade83094291055f1c96d9d1d1d7c0b986a5d
    deleted: sha256:ff426288ea903fcf8d91aca97460c613348f7a27195606b45f19ae91776ca23d
    deleted: sha256:e15afa4858b655f8a5da4c4a41e05b908229f6fab8543434db79207478511ff7

    Total reclaimed space: 533.3MB
    [root@jasontest volumes]# ls -alth
    total 32K
    -rw-------  1 root root  32K May 23 21:14 metadata.db
    drwx------  2 root root 4.0K May 23 21:14 .
    drwx--x--x 14 root root 4.0K May 21 20:26 ..

언급URL : https://stackoverflow.com/questions/46672001/is-it-safe-to-clean-docker-overlay2

반응형