时时勤拂拭,勿使惹尘埃

TOC

Categories

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 MacDocker 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 imagesdocker 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 评论:

发表评论