Docker的安装

Kali Linux 基于 Debian,Docker 提供了适用于 Debian 的软件包,可以适配到 Kali 上。关键是将 Docker 存储库配置为使用有效的 Debian 发行版(例如 bookworm,即 Debian 12,因为 Kali Rolling 通常与最新的 Debian 稳定版保持一致),并确保存储库配置正确。

方法 1:安装 docker.io(Kali 默认推荐)

Kali Linux 的包管理器中有一个名为 docker 的包,但它不是 Docker 容器引擎,而是另一个工具。因此,我们需要安装 docker.io,这是 Kali 提供的 Docker 容器引擎版本。

  1. 更新包列表
sudo apt update
  1. 安装 docker.io
sudo apt install -y docker.io
  1. 启动并启用 Docker 服务
sudo systemctl enable docker --now
  1. 验证安装: 检查 Docker 是否正确安装并运行:
docker --version
docker run hello-world

hello-world 容器会下载并运行,输出确认信息。

  1. (可选)添加用户到 Docker 组: 默认情况下,运行 Docker 命令需要 sudo。若想以非 root 用户运行 Docker,需将用户添加到 docker 组:
sudo usermod -aG docker $USER

然后注销并重新登录以应用更改:

newgrp docker
  1. (可选)安装 Kali 工具: 如果需要使用 Kali 的 Docker 镜像(如 kalilinux/kali-rolling),可以拉取镜像并安装工具:
docker pull docker.io/kalilinux/kali-rolling
docker run -ti kalilinux/kali-rolling
apt update && apt -y install kali-linux-headless

注意docker.io 是 Kali 维护的版本,可能不是最新的 Docker 版本,但安装简单且与 Kali 兼容性较好。


方法 2:安装 Docker CE(官方 Docker 仓库)

  1. 更新系统并安装必要依赖: 确保系统是最新的,并安装所需的软件包以支持 HTTPS 存储库。

    sudo apt update
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
  2. 添加 Docker 的 GPG 密钥: 下载 Docker 的官方 GPG 密钥并添加到系统中。

    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
  3. 添加 Docker 存储库: 由于 Kali Linux 基于 Debian,您需要将 Docker 存储库配置为使用 bookworm(Debian 12)作为发行版,而不是 kali-rolling。运行以下命令:

    echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    注意:如果您使用的是其他架构(如 arm64),请将 arch=amd64 替换为相应的架构。

  4. 更新包索引并安装 Docker: 更新包索引并安装 Docker CE(社区版)及其相关组件。

    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io
  5. 验证 Docker 安装: 检查 Docker 是否正确安装并运行。

    sudo systemctl start docker
    sudo systemctl enable docker
    docker --version
  6. (可选)允许非 root 用户运行 Docker: 默认情况下,Docker 需要 root 权限。如果您希望以普通用户运行 Docker,请将用户添加到 docker 组:

    sudo usermod -aG docker $USER
    newgrp docker

    然后,您可以以非 root 用户运行 docker 命令,例如:

    docker run hello-world
  7. (可选)使用国内镜像加速: 如果您在中国,网络访问 download.docker.com 可能较慢,可以使用国内镜像(如 Aliyun)。编辑 Docker 配置文件:

sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json

添加以下内容(例如使用 Aliyun 镜像):

{
  "registry-mirrors": ["https://mirrors.aliyun.com/docker-ce"]
}

如果有有代理工具可以和docker配置http代理

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

添加以下内容:

[Service]
Environment="HTTP_PROXY=http://your-new-proxy:port"
Environment="HTTPS_PROXY=http://your-new-proxy:port"

保存后重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

安装 Docker Compose

如果需要使用 Docker Compose 来管理多容器应用,可以单独安装:

  1. 下载最新版本的 Docker Compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
  1. 验证安装
docker-compose --version

注意:Docker Compose 在某些版本中可能需要单独安装,具体版本请参考 Docker 官方文档。

常见问题

  • 问题 1apt update 报错,提示 Docker 仓库不可用(如 404 Not Found)。
    • 解决:检查 /etc/apt/sources.list.d/docker.list 中的 Debian 版本是否正确(如 bookwormbullseye)。Kali 的滚动特性可能导致版本不匹配。
  • 问题 2:Docker 服务未启动。
    • 解决:运行 sudo systemctl start docker 并检查状态:sudo systemctl status docker
  • 问题 3:Kali Docker 镜像缺少工具。
    • 解决:Kali 官方 Docker 镜像(如 kalilinux/kali-rolling)默认不含完整工具集,需手动安装 kali-linux-headless 或特定工具包。

安装脚本使用了阿里云镜像源(https://mirrors.aliyun.com/docker-ce/linux/debian),但该镜像源不支持 kali-rolling 作为版本标识。Kali Linux 是基于 Debian 的滚动发行版,而 Docker 仓库通常只支持 Debian 的稳定版本(如 bookwormbullseye)。

  • 脚本问题:虽然您使用了 sed 命令将 kali-rolling 替换为 bookworm,但脚本可能在某些步骤中仍尝试使用原始的 kali-rolling 版本,导致仓库配置错误。
  • 阿里云镜像:阿里云的 Docker 镜像可能不支持所有 Debian 版本,或者配置不正确。

1. 检查并修复 Docker 仓库配置

错误表明 /etc/apt/sources.list.d/docker.list 中的仓库配置可能不正确。需要手动调整为正确的 Debian 版本(bookworm)。

  1. 检查当前仓库配置: 查看 /etc/apt/sources.list.d/docker.list
cat /etc/apt/sources.list.d/docker.list

可能的输出类似于:

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.aliyun.com/docker-ce/linux/debian kali-rolling stable
  1. 修复仓库配置: 将 kali-rolling 替换为 bookworm
sudo sed -i 's/kali-rolling/bookworm/' /etc/apt/sources.list.d/docker.list

修复后,文件内容应类似于:

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.aliyun.com/docker-ce/linux/debian bookworm stable
  1. 更新包列表
sudo apt update

如果仍然报错,检查阿里云镜像是否支持 bookworm(见步骤 2)。

  1. 继续安装 Docker
sudo apt install -y docker-ce docker-ce-cli containerd.io
  1. 验证安装
docker --version
docker run hello-world

2. 使用 Docker 官方仓库

如果阿里云镜像持续失败,尝试使用 Docker 官方仓库:

  1. 移除现有 Docker 仓库配置
sudo rm /etc/apt/sources.list.d/docker.list
  1. 添加 Docker 官方仓库
sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo tee /etc/apt/keyrings/docker.asc

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/docker.list
  1. 更新并安装
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
  1. 启动 Docker 服务
sudo systemctl enable docker --now
docker run hello-world

3. 检查阿里云镜像支持

阿里云的 Docker 镜像(mirrors.aliyun.com/docker-ce)可能不支持 bookworm 或配置有误。验证方法:

  • 使用浏览器访问 https://mirrors.aliyun.com/docker-ce/linux/debian/dists/,检查是否列出 bookworm
  • 如果不支持 bookworm,尝试其他镜像源(如清华大学镜像):
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update

4. 使用 docker.io 作为替代方案

如果 Docker CE 安装持续失败,推荐使用 Kali 软件仓库中的 docker.io,它更简单且与 Kali 兼容:

  1. 安装 docker.io
sudo apt update
sudo apt install -y docker.io
  1. 启动并启用 Docker 服务
sudo systemctl enable docker --now
  1. 验证安装
docker --version
docker run hello-world
  1. (可选)添加用户到 Docker 组
sudo usermod -aG docker $USER
newgrp docker

5. 重新运行修改后的安装脚本

如果您希望继续使用安装脚本,确保正确替换版本:

curl -sSL https://get.docker.com | sed 's/kali-rolling/bookworm/g' | sudo sh

注意:此处直接替换 kali-rollingbookworm,避免仅修改 case 语句可能导致的遗漏。

6. 检查网络和环境

确保网络正常且无代理或防火墙干扰:

  • 测试网络:
ping -c 4 mirrors.aliyun.com
curl -v https://mirrors.aliyun.com/docker-ce elements