"네임스페이스"에 대한 다른 Linux 명령은 무엇입니까?

"네임스페이스"에 대한 다른 Linux 명령은 무엇입니까?

통과다른내 말은 이 명령을 발견했다는 것입니다. nsenter그리고 네임스페이스를 사용하고 디버깅하는 데 적합한 다른 도구/명령이 있을 수 있다고 생각했습니다. 어디? 나는 그들이 어떻게 작동하는지 묻는 것이 아니라 docker/k8s 등을 사용하기 위한 더 광범위한 도구 세트를 얻는다는 것을 명심하십시오.

namespaceLinux에는 어떤 다른 명령이 있습니까?

답변1

[있습니다] 네임스페이스 작업 및 디버깅에 적합한 다른 도구/명령이 있습니까?

에른슬가장 중요한 것입니다. 몇 가지 더 있지만 많지는 않습니다. 나는 그것들을 모두 나열하려고 노력할 것이라고 생각했습니다.

  1. /proc/[pid]/ns/*- 본 적이 있기 때문에 이미 알고 있는 것입니다 nsenter. 자세한 내용이 있습니다네임스페이스(7):
    • 위 파일은 심볼릭 링크로 나타납니다. readlink/를 실행하면 ls -l네임스페이스 유형과 고유 식별자가 표시됩니다.
    • 위 파일을 바인드 마운트하여 네임스페이스에 대한 영구 참조를 유지할 수 있습니다. 이것이 조금 이상하게 들린다고 생각하신다면 동의합니다. 하지만 어떤 경우에는 유용할 수도 있습니다 :-).
  2. LSNS- /proc웹을 크롤링하고 사용 중인 다양한 네임스페이스를 모두 나열합니다.
  3. /proc/[pid]/mountinfo마운트 네임스페이스에 대해 설명합니다. 에 기록되어 있어요공정(5).

    칼럼이 많기 때문에 처음 보실 때 주의하세요. 예를 들어 rw/ 값이 서로 다른 두 개의 서로 다른 옵션 열이 있을 수 있습니다 ro. 차이점은 동일한 파일 시스템의 바인드 마운트 간에 마운트 옵션 열이 다를 수 있다는 것입니다.

    findmnt마운트된 파일 시스템을 나열하는 표준 명령입니다. 옵션이 있으므로 이를 사용하여 모든 프로세스에 대한 파일을 --task TID구문 분석할 수 있습니다 . mountinfo(PID 값도 유효한 TID입니다.)

  4. /proc/[pid]/uid_map그리고/proc/[pid]/gid_map사용자 네임스페이스.

  5. ip네트워크 인터페이스 제어 명령:
    • IP 네트워크특히 네트워크 네임스페이스에 대한 일부 명령을 제공합니다. 즉, net위에서 설명한 대로 파일을 사용합니다 ./proc/[pid]/ns/
    • ip linkveth다음을 포함하여 피어에 대한 정보를 표시할 수 있습니다 .현지의피어가 상주하는 네트워크 네임스페이스의 식별자입니다. ip netns list-id또는 lsns -t net이 로컬 식별자를 포함하는 네트워크 네임스페이스가 나열됩니다. 이러한 로컬 식별자를 어떻게 사용하는지 잘 모르겠습니다. 약간 모호한 것 같습니다. 하지만 이 QA에서는 당신이 할 수 있는 모든 것을 언급했다고 생각합니다.veth 피어 노드 ifindex의 네트워크 네임스페이스를 찾는 방법은 무엇입니까?
    • ip또한 인터페이스를 한 네트워크에서 다른 네트워크로 이동할 수 있습니다. 이것은 디버깅과 관련이 없지만.

"나는 당신을보고있다, 단일 바이너리 go컨테이너"

에서 적응별도의 컨테이너에서 실행 중인 Docker 컨테이너를 디버깅하는 방법:

사용상의 문제 nsenter. 당신이 입력하면마운트 네임스페이스컨테이너의 명령은 컨테이너 내에 포함된 명령만 실행할 수 있습니다. 하지만 Docker 컨테이너의 핵심은 애플리케이션 자체만 포함하면 된다는 것입니다!

비결은 /proc/[pid]/root/.proc(5)).

입력하시면 매우 편리합니다.PID 네임스페이스그런 다음 올바른 PID 를 /proc/1/root/검색할 필요가 없습니다.

PID 네임스페이스에 있으면 디버거를 연결하려는 프로세스가 컨테이너 내부의 PID 1(또는 PID 2)이 될 것임을 알고 있는 경우에도 매우 편리할 수 있습니다. 또는 애플리케이션/컨테이너가 다중 프로세스인 경우 즐겨찾는 ps명령을 사용하여 다양한 프로세스를 볼 수 있습니다.

관련 정보