lsof가 컨테이너 내부에서 동결되었습니다.

lsof가 컨테이너 내부에서 동결되었습니다.

저는 Fedora 36을 사용하고 있으며 컨테이너를 다음과 같이 실행하고 있습니다.

docker run --user 0 --rm \
    --privileged \
    --cap-add=SYS_PTRACE \
    --volume=$(pwd)/.env:/legacy/app/.env \
    --volume=$(pwd)/start.sh:/legacy/app/start.sh  \
    --volume=$(pwd)/nginx.conf:/legacy/app/nginx.conf \
    --volume=$(pwd)/php-fpm.conf:/legacy/app/php-fpm.conf \
    --volume=$(pwd)/.nginx:/legacy/app/.nginx \
    --volume=$(pwd)/.php-fpm.d:/legacy/app/.php-fpm.d \
    --volume=$(pwd)/.php.ini.d/php.ini:/etc/php.d/php.ini \
    --entrypoint "/legacy/app/start.sh" \
    --name test -p 8080:8080 \
    test:0.2

그러나 컨테이너 내부에서는 실행할 수 없으며 lsof항상 "정지"되고 출력이 반환되지 않습니다.

다음 명령은 컨테이너 내부에서 제공됩니다.

ps aufx | grep master
root          67  0.0  0.0  10708  2276 pts/0    S+   19:06   0:00  \_ grep --color=auto master
root          24  0.0  0.0 470572 11400 ?        Ss   18:03   0:00 php-fpm: master process (/legacy/app/php-fpm.conf)
root          28  0.0  0.0  39612  7820 ?        S    18:03   0:00 nginx: master process nginx -c /legacy/app/nginx.conf

ls -la /proc/28/fd/1
l-wx------. 1 root root 64 Oct 29 18:03 /proc/28/fd/1 -> pipe:[2444664]

lsof | grep 2444664

whoami
root

무엇을 할 수 있나요?

답변1

오늘도 비슷한 문제가 발생했는데 제 경우에는 Docker 컨테이너 내부의 열린 파일에 대한 ulimit가 너무 높았기 때문입니다.

다음을 실행하여 확인할 수 있습니다.

docker run --rm ubuntu bash -c "ulimit -n"

(내 경우처럼) 10억 이상이면 이런 문제가 생길 것입니다.

나는 내 /etc/docker/daemon.json(참조여기참고용):

{
  "default-ulimits": {
    "nofile": {
      "Hard": 1048576,
      "Name": "nofile",
      "Soft": 1048576
    }
  }
}

아직 하나 있어요GitHub 문제 열기기본 한도에 대한 주제가 논의되었지만 최종 결론에 도달하지 못한 것 같습니다.

관련 정보