[docker] Docker 컨테이너에서 코어 파일 덤프를 비활성화하는 방법

내 PHP 컨테이너는 puppeteer를 실행하여 PDF를 생성합니다. PDF 문서를 생성하면 컨테이너 내에 두 개의 코어 덤프 파일도 생성됩니다. 나는 그들이 실제로 어디에서 왔는지 확신하지 못한다.

호스트 / 서버는 CentOS 7입니다.

다음을 확인했습니다.

  1. 응용 프로그램 오류 로그가 없으며 Browsershot / puppeteer가 오류없이 실행 중입니다.
  2. 오류 로그 (예 : segfault)가 없습니다. /var/log/messages

코어 덤프를 비활성화하려고했습니다.

https://linux-audit.com/understand-and-configure-core-dumps-work-on-linux/의 코어 덤프 비활성화 섹션에 따라 완료했습니다.

  1. 다음 내용 추가 /etc/security/limits.conf
* soft core 0
* hard core 0
  1. 다음과 같이 disable-core-dumps.sh를 작성했습니다. echo “ulimit -c 0 > /dev/null 2>&1” > /etc/profile.d/disable-coredumps.sh

  2. 다음 내용을 추가했습니다 /etc/systemd/coredump.conf

[Coredump]

Storage=none
ProcessSizeMax=0
  1. 그리고 서버와 컨테이너를 재부팅합니다 .

  2. 나는 또한 ulimit -c 0컨테이너 (고산) 내부 에 설정하려고했습니다.

위의 트릭 중 어느 것도 나를 위해 작동하지 않습니다. 꼭두각시가 PDF를 생성 할 때마다 항상 아래와 같은 두 개의 코어 덤프 파일이 생성됩니다.

core.131 core.52

핵심 파일은 다음과 같습니다.

코어 덤프 파일 내용

누구든지 코어 덤프를 비활성화 할 수 있습니까? 고마워



답변

--ulimit core=0코어 덤프를 비활성화 하는 옵션 으로 컨테이너를 시작해야합니다 .

참조 : https://docs.docker.com/engine/reference/commandline/run/#set-ulimits-in-container—ulimit

호스트에서 /tmp검증 을 위해 코어 덤프 경로를 임시로 설정하십시오 .

echo '/tmp/core.%e.%p' | sudo tee /proc/sys/kernel/core_pattern

평소와 같이 컨테이너를 시작하고 코어 덤프를 강제 실행하십시오.

docker run --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(shows core.yes.<pid>)

와 지금 --ulimit core=0:

docker run --ulimit core=0 --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(No entries)


답변

도커 스웜 서비스 에서도이 문제가 있으며 –ulimit core = 0이 스웜 서비스에서 작동하지 않습니다. 아래 명령을 사용하여 도커 스웜 서비스에서 저를 위해 일했습니다!

sysctl -w kernel.core_pattern = / dev / null


답변