Dockerfile을 이용한 bpftrace 컨테이너 이미지 구축
BPFtrace는 eBPF를 기반으로 한 강력한 시스템 추적 도구로, 시스템 및 애플리케이션 수준의 동적 작업들을 추적하는 데 사용될 수 있습니다. 이 기사는 Dockerfile을 사용하여 BPFtrace를 지원하는 Docker 이미지를 구축하는 방법을 소개하며, 이 도구를 컨테이너화된 환경에서 사용할 수 있게 합니다.
Dockerfile 설명
FROM r.j3ss.co/bcc
기본 이미지는 r.j3ss.co/bcc
로, BCC(BPF Compiler Collection) 도구 세트를 포함하는 사전 구축된 이미지입니다.
ENV PATH /usr/share/bcc/tools:$PATH
환경 변수 PATH
를 설정하여 나중에 BCC 도구를 직접 실행할 수 있습니다.
RUN sed -i "s#deb http://deb.debian.org/debian buster main#deb http://deb.debian.org/debian buster main contrib non-free#g" /etc/apt/sources.list
APT 소스 목록을 수정하여 contrib
과 non-free
소스를 추가합니다. 이는 일부 비자유 소프트웨어 패키지를 설치할 수 있도록 보장하기 위함입니다.
RUN apt-get update && apt-get install -y \
ca-certificates \
clang \
curl \
gcc \
git \
g++ \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
BPFtrace를 빌드하는 데 필요한 일련의 종속성을 설치합니다. 여기에는 clang
, gcc
, git
등이 포함됩니다. --no-install-recommends
옵션은 권장 패키지를 설치하지 않아 이미지 크기를 줄입니다. 마지막으로 APT 캐시를 지워 이미지 크기를 추가로 줄입니다.
ENV BPFTRACE_VERSION v0.10.0
RUN git clone --depth 1 --branch "$BPFTRACE_VERSION" https://github.com/iovisor/bpftrace.git /usr/src/bpftrace \
&& ( \
cd /usr/src/bpftrace \
&& mkdir build \
&& cd build \
&& cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr .. \
&& make -j8 \
&& make install \
) \
&& rm -rf /usr/src/bpftrace
설치할 BPFtrace 버전을 설정하고 GitHub에서 소스 코드를 복제합니다. 그런 다음 소스 코드 디렉토리로 들어가서 cmake
를 사용하여 빌드 파일을 생성하고 make
명령어로 BPFtrace를 컴파일하고 설치합니다. -j8
옵션은 여러 코어를 사용하여 컴파일 과정을 가속화할 수 있습니다. 마지막으로, 이미지 크기를 줄이기 위해 중간 빌드 파일을 정리합니다.
ENTRYPOINT ["bpftrace"]
컨테이너의 엔트리포인트를 bpftrace
명령으로 설정하여, 컨테이너를 시작할 때 BPFtrace를 직접 실행하고 필요한 매개변수와 프로브 스크립트를 전달할 수 있습니다.