Kali Linux as a multi-platform Docker container.
100K+
# hadolint ignore=DL3007 # checkov:skip=CKV_DOCKER_7 # trivy:ignore:AVD-DS-0001 # [Don't use latest]: no tagged version available
FROM kalilinux/kali-rolling:latest
HEALTHCHECK NONE
ENTRYPOINT []
ARG USER_NAME=kali
ARG USER_HOME=/home/kali
ARG USER_ID=1000
ARG USER_GECOS=kali
SHELL ["/bin/bash", "-euo", "pipefail", "-c"]
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get upgrade -y \
# FIXME @TL workaround for amd64 vs arm64 versions
&& if [ "$(\uname -m)" = 'aarch64' ]; then \
SUFFIX='+b1' ; \
else \
SUFFIX='' ; \
fi \
&& apt-get install --no-install-recommends -y \
bind9-dnsutils=1:9.20.20-1 \
curl=8.19.0-1 \
emacs-nox=1:30.2+1-2 \
git=1:2.53.0-1 \
inetutils-traceroute=2:2.7-5 \
iputils-ping=3:20250605-1${SUFFIX} \
netcat-openbsd=1.234-2 \
nmap=7.99+dfsg-1kali1 \
openssh-client=1:10.2p1-5 \
openssl=3.5.5-1 \
python3=3.13.9-3 \
python3-pip=26.0.1+dfsg-1 \
smbclient=2:4.23.6+dfsg-2 \
tor=0.4.9.6-1 \
wget=1.25.0-2${SUFFIX} \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*
RUN adduser \
--home "${USER_HOME}" \
--uid "${USER_ID}" \
--gecos "${USER_GECOS}" \
--disabled-password \
"${USER_NAME}"
USER "${USER_NAME}"
ENV HOME="${USER_HOME}"
WORKDIR "${HOME}"