>source

도커를 실행하는 LXC 컨테이너가 있습니다. 많은 컨테이너가 성공적으로 실행되고 있지만 더 추가할 수 없습니다. 새 도커 컨테이너를 배포하려고 하는데 다음 오류가 발생합니다.

container init caused "join session keyring: create session key: disk quote exceeded": unknown

하지만 컨테이너에는 호스트와 마찬가지로 충분한 여유 공간이 있습니다. 나는 이것을 확인했다df -h그리고df-i(따라서 inode가 아닙니다)

이 오류는 무엇을 의미하며 어떻게 해결합니까?

  • 답변 # 1

    @Josh의 답변에 추가합니다. 재부팅 후에도 이 변경 사항을 유지하려면 아래에 파일을 생성할 수 있습니다./etc/sysctl.d업데이트된 커널 값으로

    # /etc/sysctl.d/99-custom.conf
    kernel.keys.maxkeys=2000
    

    중첩된 컨테이너 또는 권한이 없는 컨테이너를 많이 시작하는 경우 매핑된 사용자가 소유하는 프로세스가 많을 수 있습니다(예: UID 1000000).

  • 답변 # 2

    여기서 문제는 루트 파일 시스템이 아니라 커널 키링. 그것을 잘 설명하고 다음과 같은 해결책이 있습니다. LXC 호스트(LXC 컨테이너 내부가 아님)에서 다음을 사용하여 최대 키 수를 늘립니다.

    echo 5000 | sudo tee /proc/sys/kernel/keys/maxkeys
    

    5000분명히 임의적입니다. 당신이 지금 가지고 있는 것보다 더 큰 숫자를 선택하십시오.

    LXD의 유지 관리자인 Stéphane Graber의 말을 인용합니다.

    Docker가 커널 키링을 사용하려고 시도하는 것 같습니까? 그것은 확실히 그들에게서 새로운 행동이 될 것입니다 ...

    그리고 이 문제를 해결한 제공된 명령에 대해 simos에게 감사드립니다.

    GitHub에 대한 추가 참조

  • 이전 sed를 사용하여 한 줄에 하나 이상의 패턴 문자가 포함된 문자열을 표시하고 다른 문자열은 무시합니다.
  • 다음 awk : 여러 txt 파일에서 중복 행 제거