forked from cyz14/utils
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile.sandbox
74 lines (62 loc) · 2.03 KB
/
Dockerfile.sandbox
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
FROM williamofockham/moongen AS moongen
FROM williamofockham/dpdk
ENV NIGHTLY_DATE 2018-12-01
ENV TCP_REPLAY 4.2.6
ENV TCP_REPLAY_ETH_P='ETH_P_IP'
ENV RUSTUP_TOOLCHAIN=nightly-$NIGHTLY_DATE \
PATH=$PATH:/root/.cargo/bin
ARG cargo_inc=0
ARG rust_backtrace=1
ENV CARGO_INCREMENTAL=$cargo_inc
ENV RUST_BACKTRACE=$rust_backtrace
COPY --from=moongen /opt/moongen /opt/moongen
RUN echo "deb [trusted=yes] http://repo.iovisor.org/apt/xenial xenial-nightly main" > /etc/apt/sources.list.d/iovisor.list;
RUN apt-get update && apt-get install -y --no-install-recommends \
apt-utils \
bash \
bcc-tools \
ca-certificates \
clang \
cmake \
curl \
gcc \
gdb \
gdbserver \
git \
libc-dev \
libclang-dev \
libcurl4-gnutls-dev \
libgnutls30 libgnutls-openssl-dev \
libssl-dev \
libtool \
make \
mg \
net-tools \
netcat \
sudo \
tcpdump \
valgrind
RUN wget https://github.com/appneta/tcpreplay/releases/download/v$TCP_REPLAY/tcpreplay-$TCP_REPLAY.tar.gz -P /tmp && \
cd /tmp && \
tar zxvf tcpreplay-$TCP_REPLAY.tar.gz && cd tcpreplay-$TCP_REPLAY && \
# replace the occurrences of ETH_P_ALL with ETH_P_IP
sed -i 's|ETH_P_ALL|'"$TCP_REPLAY_ETH_P"'|g' src/common/sendpacket.c && \
./configure && make && sudo make install
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $RUSTUP_TOOLCHAIN && \
rustup --version; \
cargo --version; \
rustc --version && \
rustup component add rustfmt-preview rust-src && \
rustup component add clippy-preview --toolchain=$RUSTUP_TOOLCHAIN && \
cargo install cargo-watch cargo-expand ripgrep hyperfine sccache && \
rm -rf /usr/local/cargo/registry && \
pip install bitstruct toml Pygments pyroute2 \
--upgrade pip && \
apt-get purge --auto-remove -y curl && \
rm -rf /var/lib/apt /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN mv /usr/sbin/tcpdump /usr/bin/tcpdump
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
WORKDIR /opt/sandbox
ENTRYPOINT ["/entrypoint.sh"]
CMD ["/bin/bash"]