"docker 컨테이너"에서 /tmp 폴더를 삭제하면 어떻게 되나요?

"docker 컨테이너"에서 /tmp 폴더를 삭제하면 어떻게 되나요?

폴더를 완전히 삭제 하면 /tmp어떻게 되나요 ?

부작용이 있습니까? 아니면 운영 체제에서 다시 생성됩니까?(재부팅 중이거나 무언가를 저장해야 하는 경우/tmp)?

도커에 차이가 있나요? 아니면 Linux나 Unix와 동일하게 동작합니까?

답변1

이는 UNIX 버전과 해당 UNIX에서 실행되는 특정 소프트웨어에 따라 크게 달라집니다. 예를 들어 Kerberos는 티켓 파일을 내려놓을 수 있으므로 /tmp해당 디렉터리를 삭제하면 모든 사용자가 로그인에 실패할 수 있습니다( root로컬 비밀번호를 사용하거나...). sysdig또는 이와 유사한 추적 소프트웨어를 사용할 수 있습니다.

$ sudo sysdig "fd.name contains /tmp"
...

그리고 잠시 동안 실행시켜서 어떤 소프트웨어가 /tmp어떤 방식으로 사용되는지 알아보세요. ("카오스 원숭이" 접근 방식은 rm -rf /tmp무엇이 실패하고 어떻게 실패하는지, 프로덕션에서 좋은 아이디어일 수도 있고 아닐 수도 있음을 확인하는 것입니다...) 그동안 sysdig수집된 내용을 살펴보겠습니다.

5311 20:43:52.918062202 0 postgres (24503) > close fd=6(<u>/tmp/.s.PGSQL.5432)
202619 20:45:08.252631819 0 rpm (24540) < open fd=4(<f>/tmp) name=/tmp flags=1(O_RDONLY) mode=0
202620 20:45:08.252633087 0 rpm (24540) > read fd=4(<f>/tmp) size=8192
202621 20:45:08.252633848 0 rpm (24540) < read res=-21(EISDIR) data=
202622 20:45:08.252634580 0 rpm (24540) > close fd=4(<f>/tmp)
202623 20:45:08.252635375 0 rpm (24540) < close res=0
202627 20:45:08.252650259 0 rpm (24540) < open fd=4(<f>/var/tmp) name=/var/tmp flags=1(O_RDONLY) mode=0

이 테스트 VM의 특정 시점에 설치한 것 같습니다 postgres(데이터베이스가 더 이상 작동하지 않습니다. /tmp사라졌기 때문에 문제가 될 수 있습니까?). rpm디렉토리에 이상한 작업을 수행하고 있는데 tmp이유는 확실하지 않습니다.

운영 체제는 일반적으로 예상되는 것을 다시 생성하지 않습니다. 이것이 문제인 경우 구성 관리 정책을 설정하여 /tmp해당 권한을 생성하고 수정할 수 있습니다(CFEngine과 같은 기본 에이전트를 사용하는 동안 Ansible은 이 작업을 수행하는 것이 끔찍할 것입니다). 구성 관리를 위해 이러한 오류를 즉석에서 더 잘 감지하고 수정할 수 있지만 구성 관리 소프트웨어가 누락된 경우에도 올바르게 작동해야 하며 /tmp, 그럴 수도 있고 그렇지 않을 수도 있습니다. (그러나 누군가 또는 무언가가 임의의 OS 디렉토리를 손상시키는 경우 고칠 수 있는 것은 한계가 있습니다...)

답변2

"ls -l /tmp"를 실행합니다. /tmp에 사용자가 만들지 않은 파일이 있을 수 있습니다. 이는 많은 서비스와 프로그램이 /tmp가 존재할 것으로 예상하고 임시 파일을 /tmp에 쓰도록 구성되는 경우가 많기 때문입니다. /tmp를 완전히 삭제하면 이러한 프로세스가 삭제될 수 있으며 해당 프로세스가 다시 생성될 가능성이 줄어듭니다. 삭제하지 마십시오.

관련 정보