3.6. 컨테이너에서 애플리케이션 디버깅
문제 해결의 다양한 측면에 맞는 다양한 명령줄 툴을 사용할 수 있습니다. 다음은 일반적인 명령줄 툴과 함께 카테고리를 제공합니다.
이는 명령줄 툴의 전체 목록이 아닙니다. 컨테이너 애플리케이션을 디버깅하기 위한 툴 선택은 컨테이너 이미지와 사용 사례에 따라 크게 달라집니다.
예를 들어 systemctl,journalctl,ip,netstat,ping,traceroute,perf,iostat 툴에서는 보안상의 이유로 rootless 컨테이너에서 제한되는 네트워킹, systemd 서비스 또는 하드웨어 성능 카운터와 같은 시스템 수준 리소스와 상호 작용하므로 루트 액세스 권한이 필요할 수 있습니다.
루트리스 컨테이너는 승격된 권한이 필요 없이 작동하여 사용자 네임스페이스 내에서 루트가 아닌 사용자로 실행하여 호스트 시스템에서 향상된 보안 및 격리를 제공합니다. 호스트와의 제한된 상호 작용, 공격 면적 감소 및 보안 강화를 통해 권한 상승 취약점의 위험을 완화합니다.
루트 저장 컨테이너는 일반적으로 루트 사용자로 승격된 권한으로 실행되며 시스템 리소스 및 기능에 대한 전체 액세스 권한을 부여합니다. 근본 컨테이너는 유연성 및 제어 기능을 제공하지만 권한 상승 및 호스트 시스템의 취약점으로 인해 보안 위험이 발생합니다.
rootful 및 rootless 컨테이너에 대한 자세한 내용은 root less 컨테이너 설정, root리스 컨테이너로 업그레이드, rootless 컨테이너에 대한 특수 고려 사항을 참조하십시오.
systemd 및 프로세스 관리 툴
systemctl- 컨테이너 내의 systemd 서비스를 제어하여 시작, 중지, 활성화, 작업을 비활성화합니다.
journalctl- systemd 서비스에서 생성한 로그를 보고 컨테이너 문제 해결에 도움이 됩니다.
네트워킹 툴
ip- 컨테이너 내에서 네트워크 인터페이스, 라우팅 및 주소를 관리합니다.
netstat- 네트워크 연결, 라우팅 테이블 및 인터페이스 통계를 표시합니다.
ping- 컨테이너 또는 호스트 간의 네트워크 연결을 확인합니다.
traceroute- 네트워크 문제를 진단하는 데 유용한 대상에 도달하는 데 사용하는 경로를 식별합니다.
프로세스 및 성능 툴
ps- 컨테이너 내에서 현재 실행 중인 프로세스를 나열합니다.
top- 컨테이너 내 프로세스의 리소스 사용량에 대한 실시간 정보를 제공합니다.
htop- 리소스 사용률 모니터링을 위한 대화형 프로세스 뷰어입니다.
perf- CPU 성능 프로파일링, 추적 및 모니터링은 시스템 또는 애플리케이션 내에서 성능 병목 현상을 파악하는 데 도움이 됩니다.
vmstat- 컨테이너 내의 가상 메모리 통계를 보고하여 성능 분석을 지원합니다.
iostat- 컨테이너 내에서 블록 장치에 대한 입력/출력 통계를 모니터링합니다.
GDB(GNU Debugger)- 사용자가 실행을 추적 및 제어하고, 변수를 검사하며, 메모리를 분석하고, 런타임 중에 등록할 수 있도록 하여 프로그램 검사 및 디버깅에 도움이 되는 명령줄 디버거입니다. 자세한 내용은 Red Hat OpenShift 컨테이너 내에서 애플리케이션 디버깅 문서를 참조하십시오.
strace- 프로그램에서 수행한 시스템 호출을 가로채고 기록하므로 프로그램과 운영 체제 간의 상호 작용을 표시하여 문제를 해결할 수 있습니다.
보안 및 액세스 제어 도구
sudo- 승격된 권한으로 명령을 실행할 수 있습니다.
chroot- 명령의 루트 디렉터리를 변경하여 다른 루트 디렉터리 내에서 테스트 또는 문제 해결에 유용합니다.
podman-Specific Tools
Podman 로그- 배치-실행 시 하나 이상의 컨테이너에 존재하는 모든 로그를 검색합니다.
podman inspect- 이름 또는 ID로 식별된 대로 컨테이너 및 이미지에 대한 하위 수준 정보를 표시합니다.
Podman 이벤트-
Podman에서 발생하는 이벤트를 모니터링하고 출력합니다. 각 이벤트에는 타임스탬프, 유형, 상태, 이름(해당되는 경우) 및 이미지(해당되는 경우)가 포함됩니다. 기본 로깅 메커니즘은
journald입니다. podman run --health-cmd- 상태 점검을 사용하여 컨테이너 내에서 실행되는 프로세스의 상태 또는 준비 상태를 확인합니다.
podman top- 컨테이너의 실행 중인 프로세스를 표시합니다.
podman exec- 실행 중인 컨테이너에서 명령을 실행하거나 연결하는 것은 컨테이너에서 발생하는 상황을 더 잘 이해하는 데 매우 유용합니다.
podman export- 컨테이너가 실패하면 기본적으로 어떤 일이 발생했는지 알 수 없습니다. 컨테이너에서 파일 시스템 구조를 내보내면 마운트된 볼륨에 없는 다른 로그 파일을 확인할 수 있습니다.