Skip to content

Using Repo to install Docker Engine on Kali

Using Repo to install Docker Engine on Kali

Install Docker Engine on Debian

Debian Repo

DebianReleases - Debian Wiki

DebianRepository - Debian Wiki

DebianRepository/Unofficial - Debian Wiki

Debian - Debian 全球镜像站

OS requirements

To install Docker Engine, you need the 64-bit version of one of these Debian versions:

  • Debian Bookworm 12 (stable)
  • Debian Bullseye 11 (oldstable)

Install using the apt repository

Set up Docker's apt repository

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Install the Docker packages

To install the latest version, run:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

To install a specific version of Docker Engine, start by listing the available versions in the repository:

# List the available versions:
apt-cache madison docker-ce | awk '{ print $3 }'

5:27.5.0-1~debian.12~bookworm
5:27.4.1-1~debian.12~bookworm
...

Select the desired version and install:

VERSION_STRING=5:27.5.0-1~debian.12~bookworm
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

Install Docker Engine on Kali

Change to Debian Bookworm 12 (stable)

#!/bin/bash

# Add Docker's official GPG key:
apt-get update
apt-get install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  bookworm stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update

# Install docker
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Changed docker-compose
echo "Use docker compose up -d"
echo "Installation Complete"

Without GPG public key

#!/bin/bash

echo -e "[+] Updating System"
apt-get update
apt-get install -y ca-certificates curl

# Add the Docker repository to Apt sources
echo -e "[+] Add the Docker repository to Apt sources"
echo "deb [arch=$(dpkg --print-architecture) trusted=yes] https://download.docker.com/linux/debian bookworm stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update

# Install Docker and dependencies
echo -e "[+] Install Docker and dependencies"
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

echo -e "[+] Installation Complete"

Uninstall Docker Engine

Uninstall the Docker Engine, CLI, containerd, and Docker Compose packages:

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

Images, containers, volumes, or custom configuration files on your host aren't automatically removed. To delete all images, containers, and volumes:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Remove source list and keyrings

sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc

Auto Remove

#!/bin/bash

apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
rm -rf /etc/apt/sources.list.d/docker.list
rm -rf /etc/apt/keyrings/docker.asc

Use a proxy server with the Docker CLI

Configure the Docker client

You can add proxy configurations for the Docker client using a JSON configuration file, located in ~/.docker/config.json. Builds and containers use the configuration specified in this file.

{
 "proxies": {
   "default": {
     "httpProxy": "http://proxy.example.com:3128",
     "httpsProxy": "https://proxy.example.com:3129",
     "noProxy": "*.test.example.com,.example.org,127.0.0.0/8"
   }
 }
}

Set proxy using the CLI

Instead of configuring the Docker client, you can specify proxy configurations on the command-line when you invoke the docker build and docker run commands.

Proxy configuration on the command-line uses the --build-arg flag for builds, and the --env flag for when you want to run containers with a proxy.

docker build --build-arg HTTP_PROXY="http://proxy.example.com:3128" .
docker run --env HTTP_PROXY="http://proxy.example.com:3128" redis

Daemon proxy configuration

systemd unit file

If you're running the Docker daemon as a systemd service, you can create a systemd drop-in file that sets the variables for the docker service.

#!/bin/bash

# Create a systemd drop-in directory for the docker service
mkdir -p /etc/systemd/system/docker.service.d

# Create a file named /etc/systemd/system/docker.service.d/http-proxy.conf that adds the HTTP_PROXY environment variable
touch /etc/systemd/system/docker.service.d/proxy.conf

# If you are behind an HTTPS proxy server, set the HTTPS_PROXY environment variable
# Multiple environment variables can be set; to set both a non-HTTPS and a HTTPs proxy
tee /etc/systemd/system/docker.service.d/proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://ip:port"
Environment="HTTPS_PROXY=http://ip:port"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
EOF

# Flush changes and restart Docker
systemctl daemon-reload
systemctl restart docker

# Verify that the configuration has been loaded and matches the changes you made, for example
systemctl show --property=Environment docker

创建代理

#!/bin/bash

set -e  # 遇到错误立即退出

PROXY_IP_PORT=" " # 添加代理 IP
NO_PROXY_ADDRS="localhost,127.0.0.1,.local,.example.com"

echo "[*] Setting Docker proxy to http://${PROXY_IP_PORT} ..."

# 创建 systemd drop-in 目录
mkdir -p /etc/systemd/system/docker.service.d

# 写入代理配置
tee /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://${PROXY_IP_PORT}"
Environment="HTTPS_PROXY=http://${PROXY_IP_PORT}"
Environment="NO_PROXY=${NO_PROXY_ADDRS}"
EOF

# 重载 systemd 并重启 Docker
systemctl daemon-reload
systemctl restart docker

# 验证环境变量是否生效
echo "[*] Current Docker environment:"
systemctl show --property=Environment docker

echo "[*] Done. Docker is now configured to use proxy: http://${PROXY_IP_PORT}"

Using Ubuntu Repo

#!/bin/bash
# 卸载冲突包(可选)
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
     apt-get remove $pkg -y
done

# 添加Docker官方GPG密钥
 apt-get update
 apt-get install -y ca-certificates curl
 install -m 0755 -d /etc/apt/keyrings
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
 chmod a+r /etc/apt/keyrings/docker.asc

# 添加APT源(手动指定版本代号,例如 jammy)
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu jammy stable" | \
   tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装指定版本(手动指定版本字符串)
 apt-get update
VERSION_STRING="5:20.10.24~3-0~ubuntu-jammy"  # 这里直接写死
 apt-get install -y \
    docker-ce=$VERSION_STRING \
    docker-ce-cli=$VERSION_STRING \
    containerd.io \
    docker-buildx-plugin \
    docker-compose-plugin

Kali Docs

Installing docker-ce on Kali Linux

docker-ce can be installed from Docker repository. One thing to bear in mind, Kali Linux is based on Debian, so we need to use Debian’s current stable version (even though Kali Linux is a rolling distribution). At the time of writing (Dec. 2023), its “bookworm”:

https://www.kali.org/docs/containers/installing-docker-on-kali/

kali@kali:~$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list

kali@kali:~$ curl -fsSL https://download.docker.com/linux/debian/gpg |
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

kali@kali:~$ sudo apt update
kali@kali:~$ sudo apt install -y docker-ce docker-ce-cli containerd.io