mirror of https://github.com/aya-rs/aya
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.5 KiB
Docker
83 lines
2.5 KiB
Docker
FROM ubuntu:24.04
|
|
|
|
# Install system dependencies for eBPF development
|
|
RUN apt-get update && apt-get install -y \
|
|
curl \
|
|
build-essential \
|
|
pkg-config \
|
|
libc6-dev \
|
|
clang \
|
|
llvm \
|
|
libelf-dev \
|
|
libssl-dev \
|
|
iproute2 \
|
|
net-tools \
|
|
tcpdump \
|
|
jq \
|
|
ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Rust
|
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
ENV PATH="/root/.cargo/bin:${PATH}"
|
|
|
|
# Install nightly Rust for eBPF targets
|
|
RUN rustup install nightly
|
|
RUN rustup +nightly target add bpfel-unknown-none bpfeb-unknown-none
|
|
|
|
# Install bpf-linker
|
|
RUN cargo install bpf-linker
|
|
|
|
# Set up working directory
|
|
WORKDIR /workspace
|
|
|
|
# Copy the traffic monitor source
|
|
COPY . .
|
|
|
|
# Build the traffic monitor (this will build the eBPF program too)
|
|
RUN cargo build --release
|
|
|
|
# Create a script to demonstrate the traffic monitor
|
|
RUN echo '#!/bin/bash\n\
|
|
echo "🚀 Traffic Monitor Demo in Linux Container"\n\
|
|
echo "=========================================="\n\
|
|
echo\n\
|
|
echo "📊 System Information:"\n\
|
|
echo " Kernel: $(uname -r)"\n\
|
|
echo " Architecture: $(uname -m)"\n\
|
|
echo " OS: $(cat /etc/os-release | grep PRETTY_NAME | cut -d= -f2 | tr -d \\"\\")"\n\
|
|
echo\n\
|
|
echo "🔧 Available Network Interfaces:"\n\
|
|
ip link show | grep -E "^[0-9]+:" | while read line; do\n\
|
|
iface=$(echo "$line" | cut -d: -f2 | tr -d " ")\n\
|
|
state=$(echo "$line" | grep -o "state [A-Z]*" | cut -d" " -f2)\n\
|
|
echo " $iface ($state)"\n\
|
|
done\n\
|
|
echo\n\
|
|
echo "📦 eBPF Tools Available:"\n\
|
|
echo " clang: $(clang --version | head -1)"\n\
|
|
echo " llvm: $(llvm-config --version)"\n\
|
|
echo " cargo: $(cargo --version)"\n\
|
|
echo " bpf-linker: $(bpf-linker --version || echo \"Available\")"\n\
|
|
echo\n\
|
|
echo "🧪 Running Unit Tests:"\n\
|
|
cargo test --release\n\
|
|
echo\n\
|
|
echo "📋 Configuration Demo:"\n\
|
|
echo "Using default configuration:"\n\
|
|
cat configs/default.json | jq .\n\
|
|
echo\n\
|
|
echo "🏗️ Build Information:"\n\
|
|
echo "The traffic monitor has been built with eBPF support."\n\
|
|
echo "In a real scenario, you would run:"\n\
|
|
echo " sudo ./target/release/traffic-monitor -i eth0 -c configs/default.json"\n\
|
|
echo\n\
|
|
echo "⚠️ Note: Running the actual eBPF program requires:"\n\
|
|
echo " 1. CAP_SYS_ADMIN capabilities (--privileged flag)"\n\
|
|
echo " 2. Access to the host network stack"\n\
|
|
echo " 3. Proper network interface"\n\
|
|
echo\n\
|
|
echo "✅ Traffic Monitor Demo Complete!"\n\
|
|
' > /workspace/demo.sh && chmod +x /workspace/demo.sh
|
|
|
|
CMD ["/workspace/demo.sh"] |