Kali 系统里装 Docker,千万别装错包了!
三点安装TIPS:
- 同名“李鬼”包:Kali 的系统源里早就有个叫
docker的旧软件了,但它不是我们用来跑容器的那个 Docker。如果你直接敲sudo apt install docker,装出来的就是个没用的东西。 - 认准正确的名字:我们要装的真正能跑容器的 Docker,在 Kali 里叫
docker.io。所以正确的安装命令应该是sudo apt install docker.io。 - 用起来没区别:虽然安装包的名字叫
docker.io,但装完之后,你在命令行里敲的命令依然是docker(比如docker ps、docker 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 ps、docker run等命令时,都必须在前面加上sudo并输入密码,操作相对繁琐。 - 加入 docker 组:将用户加入该组后,系统会授予该用户对 Docker 套接字的读写权限。用户可以直接运行 Docker 命令,无需每次都输入
sudo密码,极大提升了开发和运维的便捷性。
2. 系统安全性(等同于 root 权限的风险)
- 不加入 docker 组:用户的系统权限被严格限制。即使偶尔需要使用 Docker,通过
sudo执行时也会留下审计日志,且必须知道管理员密码,这在多用户环境或生产服务器中提供了必要的安全屏障。 - 加入 docker 组:这等同于授予了该用户潜在的
root 权限。因为 Docker 守护进程以root身份运行,组内用户可以通过挂载宿主机目录等方式,轻易突破容器的隔离限制,获取宿主机的最高控制权。例如,通过执行docker run -v /:/hostos -it ubuntu chroot /hostos命令,普通用户可以直接将宿主机的整个根目录挂载到容器内,从而获得完整的系统rootshell,这带来了极大的数据泄露和服务中断隐患。
3. 适用场景建议
- 不加入 docker 组:适用于生产环境、多用户共享服务器或任何对安全要求较高的场景。在这些环境中,应遵循最小权限原则,避免随意开放 Docker 组权限,或者考虑使用更安全的替代方案(如 Rootless Docker、Podman 或集中化的 CI/CD 执行环境)。
- 加入 docker 组:适用于个人开发机、本地测试环境或受信任的单一用户环境。在这些场景下,为了追求操作效率,可以接受这种权限委托带来的安全风险。
参考
https://www.kali.org/docs/containers/installing-docker-on-kali/

浙公网安备 33010602011771号