동료는 시스템이 테스트 환경에 로그인할 수 없다는 이유로 단호하게 모니터링을 확인했고, 서비스 포트가 열려 있음을 확인했으며, 서버에 로그인해 하드 디스크 사용량을 확인했더니 특정 디스크에 마운트된 디렉터리가 가득 차 있음을 확인했습니다. 아래 그림과 같습니다:
이 디스크는 도커 애플리케이션이 사용하는 100% 디스크이며, 처음에는 로그 파일 작성 불가 때문에 모듈이 외부 세계에 서비스를 제공하는 것을 막는 것으로 의심됩니다.
큰 파일을 찾아서 /var/lib/docker/containers/ 하위 디렉터리에서 찾으세요어떤 json.log 파일이 30G를 차지하고 있습니다。
세척, 컨테이너 로그 운영 (증상 치료)
용기가 즉시 정상적으로 제공될 수 있도록 하기 위해서입니다. 임시 해결책으로는 이러한 파일을 빠르게 정리하고 하드 디스크 공간을 확보하는 것이 스크립트입니다:
도커 컨테이너가 실행 중이라면, rm -rf로 로그를 삭제하면 df -h로 디스크 공간이 해제되지 않습니다. 그 이유는 리눅스나 유닉스 시스템에서는 rm -rf 또는 파일 관리자를 통해 파일을 삭제하면 파일 시스템의 디렉터리 구조에서 연결이 해제되기 때문입니다. 파일이 열려 있고 프로세스가 사용 중이라면, 프로세스는 여전히 파일을 읽을 수 있고 디스크 공간은 계속 차지됩니다. 올바른 포즈는 cat /dev/null > *-json.log이며, 물론 rm -rf로 제거한 후 도커를 재시작할 수도 있습니다.
말:빈 디스크의 디렉터리에 새 스크립트를 생성하세요. 그렇지 않으면 정상적으로 스크립트를 만들 수 없습니다。
도커 컨테이너 로그 크기 설정 (근본 원인)
컨테이너 서비스의 최대 로그 크기를 설정하고, 컨테이너를 시작할 때 로그 크기를 설정하는 매개변수를 추가하세요. 예를 들어:
max-size=500m, 즉 용기의 통나무 크기 상한은 500M입니다. max-file=3으로, 이는 컨테이너에 id+.json, id+1.json, id+2.json 세 개의 로그가 있음을 의미합니다.
도커가 새 디스크로 마이그레이션되었습니다
도커 관련 데이터는 시스템 디스크에 존재하며, 시스템 디스크 크기는 50G, 데이터 디스크는 100G 크기입니다. 기존 도커 데이터를 데이터 디스크로 옮기는 방법은 무엇인가요?
CentOS 시스템 yum 방법으로 설치된 도커의 기본 설치 디렉터리는 /var/lib/docker여야 합니다
Docker 버전 < v17.05.0
dockerd는 –graph=/var/lib/docker와 같은 매개변수 그래프를 통해 이미지와 컨테이너 저장 경로를 지정할 수 있기 때문에, 시작 매개변수를 지정하는 설정만 수정하면 됩니다.
Docker의 설정 파일은 대부분의 백그라운드 프로세스 매개변수를 설정할 수 있으며, 각 운영체제의 저장 위치는 Ubuntu에서는 /etc/default/docker, CentOS에서는 /etc/sysconfig/docker로 일관되지 않습니다.
Docker version >= v17.05.0
Docker가 이번 릴리스에서 공식적으로 그래프 기능을 폐지했기 때문에, 기기에 Docker 버전 >= v17.05.0이 설치되어 있다면, /etc/default/docker 구성 파일에서 그래프 매개변수를 지정하여 Docker의 기본 설치(저장소) 디렉터리를 수정할 수 없습니다.
새로운 버전의 Docker가 설치(저장소) 디렉터리를 수정하는 다른 방법도 있습니다: 데이터루트 매개변수의 값을 지정하기 위해 (새로운) /etc/docker/daemon.json를 수정하는 것입니다.
Docker daemon directory configuration:하이퍼링크 로그인이 보입니다.
마이그레이션 준비: 모든 컨테이너 애플리케이션을 중지하고 도커 서비스를 중지하세요 (systemctl stop docker).
다음 명령어로 /home/software에 새 디렉터리를 생성하세요:
/var/lib/docker 디렉터리를 /home/software/docker 디렉터리로 마이그레이션하세요(복사한 후 /var/lib/docker 디렉터리 파일이 정상 상태일 때 삭제하는 것이 권장됩니다). 명령어는 다음과 같습니다:
복사할 때-a 매개변수를 꼭 추가하세요. 그렇지 않으면 일부 컨테이너가 제대로 작동하지 않을 수 있습니다!!!!!
다음 명령어로 현재 디렉터리의 모든 소프트 연결과 파일 포인트를 확인하세요:
다음 명령어로 /etc/docker/daemon.json 파일을 수정하세요:
저장 후 다음 명령어로 도커 서비스를 시작합니다:
용기를 시작하고, 모든 테스트가 정상적으로 진행되며, 마침내,/var/lib/docker 폴더를 삭제하세요。
(끝)
|