1일보다 오래된 모든 Docker 인스턴스를 찾아 종료합니다.

1일보다 오래된 모든 Docker 인스턴스를 찾아 종료합니다.

명령을 실행해야 해요

 docker ps -a 

어떤 목록:

id    name   time
1      abc    6 weeks ago

죽이려면 다음 명령을 실행해야 합니다.

docker kill id

모든 ID를 찾고 1일보다 오래된 각 ID에 대해 kill 명령을 실행해야 합니다. 어떻게 해야 하나요?

답변1

일부 docker 명령은 go 템플릿을 사용하여 출력 형식을 조정할 수 있는 가능성을 제공합니다. 따라서 이 메커니즘을 사용하여 처리하기 더 쉬운 실행 중인 컨테이너의 시작 시간을 얻을 수 있습니다.

예를 들어:

docker ps --format='{{.ID}}' \
  | xargs -n 1 -r docker inspect \
                           -f '{{.ID}} {{.State.Running}} {{.State.StartedAt}}' \
  | awk '$2 == "true" && $3 <= "'$(date -d 'yesterday' -Ins --utc \
                                     | sed 's/+0000/Z/')'" { print $1 }' \
  | xargs -r docker kill

여기서는 GNU를 가정합니다 xargs. 이 -r옵션은 xargs인수가 하나 이상 있는 경우에만 명령이 실행되도록 지시합니다. 우리는 또한 GNU를 사용합니다 date. 목표는 어제 날짜 + 시간을 Zulu 시간 접미사가 있는 ISO 형식으로 가져와 내부 Docker 날짜 형식과 호환되도록 하는 것입니다. 따라서 해당 날짜 형식의 사전순이 날짜 순서와 일치하므로 일반 문자열 비교를 사용하여 두 날짜를 비교할 수 있습니다.

docker 명령에는 기본적으로 실행 중인 컨테이너만 표시되므로 설정된 옵션이 ps없습니다 . 종료하려면 실행 중인 컨테이너만 확인하면 됩니다.-adocker ps

docker 명령 별칭(예 alias docker='sudo /usr/bin/docker': )을 정의하는 경우 이 파이프라인에서 로 바꿔야 합니다 docker.sudo /usr/bin/docker

관련 정보