73 lines
2.9 KiB
Docker
73 lines
2.9 KiB
Docker
ARG DEBIAN_VERSION=13.2-slim
|
|
FROM debian:${DEBIAN_VERSION}
|
|
|
|
# Install dependencies
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
curl \
|
|
gnupg \
|
|
iptables \
|
|
procps \
|
|
e2fsprogs \
|
|
xfsprogs \
|
|
xz-utils \
|
|
pigz \
|
|
zstd \
|
|
kmod \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Docker
|
|
RUN install -m 0755 -d /etc/apt/keyrings \
|
|
&& curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \
|
|
&& chmod a+r /etc/apt/keyrings/docker.gpg \
|
|
&& echo \
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
|
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
|
tee /etc/apt/sources.list.d/docker.list > /dev/null \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
docker-ce \
|
|
docker-ce-cli \
|
|
containerd.io \
|
|
docker-buildx-plugin \
|
|
docker-compose-plugin \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Kata Containers (Static Binaries)
|
|
ARG KATA_VERSION=3.24.0
|
|
ARG ARCH=amd64
|
|
RUN curl -fsSL https://github.com/kata-containers/kata-containers/releases/download/${KATA_VERSION}/kata-static-${KATA_VERSION}-${ARCH}.tar.zst -o kata-static.tar.zst \
|
|
&& tar -I zstd -xvf kata-static.tar.zst -C / \
|
|
&& rm kata-static.tar.zst \
|
|
&& ln -s /opt/kata/bin/kata-runtime /usr/bin/kata-runtime \
|
|
&& ln -s /opt/kata/bin/containerd-shim-kata-v2 /usr/bin/containerd-shim-kata-v2 \
|
|
&& ln -s /opt/kata/bin/kata-monitor /usr/bin/kata-monitor \
|
|
&& ln -s /opt/kata/bin/kata-collect-data /usr/bin/kata-collect-data \
|
|
&& ln -s /opt/kata/bin/qemu-system-x86_64 /usr/bin/qemu-system-x86_64 || true \
|
|
&& ln -s /opt/kata/libexec/virtiofsd /usr/bin/virtiofsd || true
|
|
|
|
# Configure Kata
|
|
RUN mkdir -p /etc/kata-containers \
|
|
&& cp /opt/kata/share/defaults/kata-containers/configuration-qemu.toml /etc/kata-containers/ \
|
|
&& cp /opt/kata/share/defaults/kata-containers/configuration-fc.toml /etc/kata-containers/ || true
|
|
|
|
# Install Firecracker
|
|
ARG FIRECRACKER_VERSION=1.14.0
|
|
RUN if [ "${ARCH}" = "amd64" ]; then ARCH="x86_64"; fi \
|
|
&& curl -fsSL https://github.com/firecracker-microvm/firecracker/releases/download/v${FIRECRACKER_VERSION}/firecracker-v${FIRECRACKER_VERSION}-${ARCH}.tgz -o firecracker.tgz \
|
|
&& tar -xzf firecracker.tgz \
|
|
&& mv release-v${FIRECRACKER_VERSION}-${ARCH}/firecracker-v${FIRECRACKER_VERSION}-${ARCH} /usr/local/bin/firecracker \
|
|
&& mv release-v${FIRECRACKER_VERSION}-${ARCH}/jailer-v${FIRECRACKER_VERSION}-${ARCH} /usr/local/bin/jailer \
|
|
&& chmod +x /usr/local/bin/firecracker /usr/local/bin/jailer \
|
|
&& rm -rf release-v${FIRECRACKER_VERSION}-${ARCH} firecracker.tgz
|
|
|
|
# Set up dind
|
|
VOLUME /var/lib/docker
|
|
|
|
# Copy entrypoint script
|
|
COPY dockerd-entrypoint.sh /usr/local/bin/
|
|
RUN chmod +x /usr/local/bin/dockerd-entrypoint.sh
|
|
|
|
ENTRYPOINT ["dockerd-entrypoint.sh"]
|
|
CMD ["dockerd"]
|