macOS上使用kali-linux for docker
0x0 Docker简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
Docker值得关注的特性
文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup。
网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址。
日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器,无需使用模板或手动配置。
交互式shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上。
总之,docker 是一个安装系统或者应用的容器,不用麻烦的设置,也不用处理一个接一个的依赖,而且不会对原有系统造成影响,可以大胆尝试任何想安装的系统或应用。
0x1 Docker for Mac
Docker在macOS系统上有两种运行方式,参考Docker for Mac vs. Docker Toolbox:
Docker for Mac
基于HyperKit轻量级macOS虚拟化解决方案,一次只能运行一个VM:Docker Toolbox
则基于VirtualBox VM
虚拟化方案,支持多个虚拟机:Docker for Mac
和 Docker Toolbox
可以并存共用,但由于Docker Toolbox
增加了virtualbox
的开销,所以官方更推荐使用Docker for Mac
,可以获得Linux下一样的丝滑体验。
0x2 使用Docker for Mac
0x21 安装Docker for Mac
首先去官网下载Docker for Mac(需注册)安装,安装完成后即可启动app:
0x22 使用docker
docker app是包含了docker的后台服务,所有功能都需要它的支持,启动app并登录后状态如下:
docker提供了一个可视化的容器管理工具Kitematic
,需要通过Launchpad打开:打开加载完成后界面如下,可以看到市场里有很多已经打包好了的容器镜像:
使用关键词
kali
检索,可以发现有多个容器,但只有第一个kalilinux
才是kali官方发布的容器镜像。但kali官方给的只是1.X版本,而且基本上是个空系统(没有metasploit等工具),所有工具都需要自己通过apt-get
安装。所以docker上才有这么多做好的镜像,有的是包含了metasploit,有的包含了w3af。点击
CREATE
下载成功后,启动容器,点击EXEC
即可弹出kali的shell:0x3 使用Kali Linux Docker容器
0x31 安装工具
kali官方给的只是空系统,所以启动后都需要
更新源:
apt-get
安装工具,如:更新源:
apt-get update
apt-get upgrade
安装vim:
apt-get install vim
安装nmap:
apt-get install nmap
安装metasploit,比macOS安装metasploit简单很多:
apt-get install metasploit-framework
metasploit安装完成后执行
msfconsole
即可使用:0x32 保存修改
docker修改后的container需要commit一下进行保存,保存好就会创建新的镜像,如果不保存直接退出,是不会修改container的,好处就在一次配置好,以后直接用。但不建议每次使用后都commit,因为每一次修改都会让镜像更加臃肿:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88f6988cdb9f kalilinux/kali-linux-docker:latest "bash" 11 minutes ago Up 11 minutes kali-linux-docker
$ docker commit 88f6988cdb9f kali_01
//docker commit <container id> <new id>
commit完成后,可通过
docker images
和docker inspect kali_01
来查看保存的镜像:$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kali_01 latest 6721b15ccaa8 21 seconds ago 3.09GB
kalilinux/kali-linux-docker latest f26f3ae90aee 5 weeks ago 1.57GB
$ docker inspect kali_01
[
{
"Id": "sha256:6721b15ccaa81de9737554fc00f13f8fb08fe5597ce291569087b39497a5ccf4",
"RepoTags": [
"kali_01:latest"
],
"RepoDigests": [],
"Parent": "sha256:f26f3ae90aeef2c8448eadf63123a194de7417311b0808f50941bad2e61e3172",
...
使用保存的镜像:
$ docker run -t -i kali_01
0x4 docker 常用命令
整理了下常用docker 常用命令,如果只是用kali的不是做系统架构和运维的话,基本上够用了:
docker run -t -i <image> //用镜像创建一个容器
docker pull image //拉拽镜像
docker images //查看可用镜像
docker ps //查看运行的容器
docker ps -a //查看所有的容器
docker stop <container id> //停止该容器
docker start <container id> //开始该容器
docker attach <container id> //与该容器交互
docker commit <container id> <new id> //创建新的镜像
docker rm <container id> //删除容器
docker rmi <image name> //删除镜像
docker cp <containerId>:/file/path/within/container /host/path/target //从Docker容器内拷贝文件到主机上
0 评论:
发表评论