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
- 컨테이너가 실패하면 기본적으로 어떤 일이 발생했는지 알 수 없습니다. 컨테이너에서 파일 시스템 구조를 내보내면 마운트된 볼륨에 없는 다른 로그 파일을 확인할 수 있습니다.
추가 리소스
Red Hat OpenShift 컨테이너 내에서 애플리케이션 디버깅
-
gdb
-
-
코어 덤프,
sosreport
,gdb
,ps
,core
.
-
코어 덤프,
-
Docker exec + env,
netstat
,kubectl
,etcdctl
,journalctl
, docker logs
-
Docker exec + env,
-
podman logs
,systemctl
,
/podman exec
kill
/restart
,podman insect
, podman exec ,podman
exec ,podman export
,paunch
를 확인합니다.
-
외부 링크