Kali 系统里装 Docker,千万别装错包了!

三点安装TIPS:

  1. 同名“李鬼”包:Kali 的系统源里早就有个叫 docker 的旧软件了,但它不是我们用来跑容器的那个 Docker。如果你直接敲 sudo apt install docker,装出来的就是个没用的东西。
  2. 认准正确的名字:我们要装的真正能跑容器的 Docker,在 Kali 里叫 docker.io。所以正确的安装命令应该是 sudo apt install docker.io
  3. 用起来没区别:虽然安装包的名字叫 docker.io,但装完之后,你在命令行里敲的命令依然是 docker(比如 docker psdocker run),这点完全不用改。

一句话总结:安装时认准 docker.io,使用时照常用 docker

安装docker

kali@kali:~$ sudo apt update
kali@kali:~$ sudo apt install -y docker.io
kali@kali:~$ sudo systemctl enable docker --now
kali@kali:~$ docker

现在可以开始使用docker。

加入docker组

如果你想加入 docker 组,还需要额外一步:

# 将当前用户追加入 docker 组,权限变更不会立即生效。系统需要用户重新登录(注销再登录,或者重启服务器)才能加载新的组权限。
kali@kali:~$ sudo usermod -aG docker $USER 

# 在当前终端会话中,立即将当前用户加入到 docker 用户组,无需注销或重启系统即可立刻获得运行 Docker 命令的权限-热加载
kali@kali:~$ newgrp docker

# 3. 测试是否生效(不再需要加 sudo)
docker ps

加入docker组与不加入的区别

PS:加入 docker 组是用“安全性”换取“便捷性”。如果你是在自己的个人电脑上搭建靶场(如Pikachu 靶场等),加入该组会非常方便;但如果是管理公司的生产服务器,强烈建议谨慎操作,不要随意将普通用户加入 docker 组。

1. 操作便捷性(免 sudo 与 需 sudo)

  • 不加入 docker 组:Docker 守护进程默认以 root 权限运行,普通用户没有权限访问 Docker 的通信套接字(/var/run/docker.sock)。因此,每次执行 docker psdocker run 等命令时,都必须在前面加上 sudo 并输入密码,操作相对繁琐。
  • 加入 docker 组:将用户加入该组后,系统会授予该用户对 Docker 套接字的读写权限。用户可以直接运行 Docker 命令,无需每次都输入 sudo 密码,极大提升了开发和运维的便捷性。

2. 系统安全性(等同于 root 权限的风险)

  • 不加入 docker 组:用户的系统权限被严格限制。即使偶尔需要使用 Docker,通过 sudo 执行时也会留下审计日志,且必须知道管理员密码,这在多用户环境或生产服务器中提供了必要的安全屏障。
  • 加入 docker 组这等同于授予了该用户潜在的 root 权限。因为 Docker 守护进程以 root 身份运行,组内用户可以通过挂载宿主机目录等方式,轻易突破容器的隔离限制,获取宿主机的最高控制权。例如,通过执行 docker run -v /:/hostos -it ubuntu chroot /hostos 命令,普通用户可以直接将宿主机的整个根目录挂载到容器内,从而获得完整的系统 root shell,这带来了极大的数据泄露和服务中断隐患。

3. 适用场景建议

  • 不加入 docker 组:适用于生产环境、多用户共享服务器或任何对安全要求较高的场景。在这些环境中,应遵循最小权限原则,避免随意开放 Docker 组权限,或者考虑使用更安全的替代方案(如 Rootless Docker、Podman 或集中化的 CI/CD 执行环境)。
  • 加入 docker 组:适用于个人开发机、本地测试环境或受信任的单一用户环境。在这些场景下,为了追求操作效率,可以接受这种权限委托带来的安全风险。

参考

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

posted @ 2026-08-18 15:24  MR·zero  阅读(8)  评论(0)    收藏  举报