docker 내부에서 ulimit를 사용하여 무제한 코어 파일 크기를 설정하고 싶습니다. 난 이걸 할 수 없어
ulimit -c unlimited
Docker의 매개변수는 프레임워크에 의해 설정되므로 unlimited
매개변수가 허용되지 않습니다. 그래서 값을 직접 전달하여 설정해야 합니다. 9223372036854775807이 최대값이라는 것을 알았지만 설정하면 다음과 같은 결과를 얻습니다.
ulimit: 9223372036854775807: limit out of range
전달할 수 있는 최대값을 찾는 방법은 무엇입니까 ulimit -c
?
답변1
Linux에서는 RLIMIT_CORE
제한( setrlimit(2)
man 페이지 참조)이 바이트 단위로 표시됩니다. 대부분 ulimit
의 다른 쉘의 경우 bash
킬로바이트로 표시됩니다.
RLIMIT_CORE
Linux에서 bash에 전달할 수 있는 가장 큰 값(바이트)은 setrlimit()
가장 큰 부호 없는 64비트 정수(18446744073709551615)입니다. 실제로는 특수 값이라는 점을 기억하세요. RLIM_INFINITY
bash에 전달할 수 있는 가장 큰 값은 ulimit
1024로 나누기, 18014398509481983입니다 . 그러나 이는 1023 보다 짧은 RLIMIT_INFINITY
18446744073709550592 로 제한을 설정하지 않습니다 .18014398509481983 * 1024
RLIM_INFINITY
답변2
이 플래그를 사용하여 Docker 런타임 컨테이너에 대한 제한을 설정할 수 있습니다 --ulimit
.
docker run --ulimit core=<size> ...
"무제한"은 실제로 실제 값이 아니기 때문에 지원되는 값이 아니지만 -1은 이와 동일합니다.
$ docker run -it --ulimit core=-1 ubuntu:18.04 sh -c 'ulimit -a | grep core'
coredump(blocks) unlimited