文章目录
- Docker
- 组成部分
- 架构
- 应用场景
- 优点
- Docker安装
- Docker的基本使用
- Docker搭建sqli-labs靶场
- 使用docker部署sqli-labs靶场
Docker
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的
Linux
或windows
机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。漏洞复现一般比较常用的方式就是使用docker-vulhub
进行环境搭建
Vulhub简介
vulhub
是一个基于docker
和docker-compose
的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现会变得很简单。
Docker-compose简介
docker-compose
是一个用python
写的一个docker
容器管理工具,可以更加方便的对docker
容器进行管理,可以一键启动多个容器
组成部分
一个完整的Docker
有以下几个部分组成:
DockerClient
客户端Docker Daemon
守护进程Docker Image
镜像DockerContainer
容器
架构
镜像(
Image
):Docke
r 镜像(Image),就相当于是一个root
文件系统。比如官方镜像ubuntu:16.04
就包含了完整的一套Ubuntu16.04
最小系统的root
文件系统。
容器(Container
):镜像(Image
)和容器(Container
)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository
):仓库可看成一个代码控制中心,用来保存镜像。
Docker
使用客户端-服务器 (C/S
) 架构模式,使用远程API
来管理和创建Docker
容器。Docker
容器通过 Docker 镜像来创建。- 容器与镜像的关系类似于面向对象编程中的对象与类。
应用场景
Web
应用的自动化打包和发布。- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的平台来搭建自己的环境。
优点
- Docker 是一个用于开发,交付和运行应用程序的开放平台。
- Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
- Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
- 灵活、轻量级、便携式、可扩展性、可堆叠
- Docker轻巧快速,在同一硬件上运行更多工作
- 负硬件成本低,虚拟化硬件损耗也较低,性能好;
- 支持打包管理,保证一致性;
- 动态调度迁移成本低。
Docker安装
首先查看kali
是否配置了更新源
lsb_release -a //查看kali版本
其中kali-rolling
为最新版
apt-get update //更新软件包列表
我的在安装时出现了权限不够问题
解决方法:
sudo passwd root //修改root密码
注意:在输入新密码时,键盘输入不会显示在终端,但是后台会记录,输入完直接点击回车即可。
完成root
提升后重新在终端输入apt-get update
来更新软件包列表
或在前面添加sudo
如果提示与主机路由器连接不上之类的需要更换源的问题
sudo vim /etc/apt/suorces.list
输入i
进行编辑,修改源文件为下面的值,将原来的值在前面使用#
注释掉。
# See https://www.kali.org/docs/general-use/kali-linux-sources-list-repositories/
deb http://http.kali.org/kali kali-rolling main contrib non-free
#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
#浙大
deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
# Additional line for source packages
# deb-src http://http.kali.org/kali kali-rolling main contrib non-free
最后输入:wq
(保存并退出),即可成功更换源。
sudo apt-get update
apt-get install -y apt-transport-https ca-certificates //安装CA证书
apt-get install dirmngr //安装dirmngr
添加GPG
密钥并添加更新源
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo echo ‘deb https://download.docker.com/linux/debian buster stable’ | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update //系统更新
我的第一次提示文件第一行的记录格式有误
解决方法:
sudo rm /etc/apt/sources.list.d/docker.list
安装docker
sudo apt install docker-ce
启动docker
服务器
service docker start
安装compose
sudo apt install docker-compose
docker
安装测试
docker version
查看docker版本信息
docker images
查看拥有的images
docker ps
查看docker container
Docker的基本使用
docker images 查看存在的镜像
docker rmi image 删除镜像
docker run -dt --name sqli -p 80:80 --rm acgpiano/sqli-labs 运行存在的镜像
docker exec -it <container ID> /bin/bash 进入运行中的容器
docker run -it --rm ubuntu /bin/bash 运行存在的镜像,并以交互的方式进入容器,运行完删除容器
docker ps 查看运行中的容器
docker ps -a 查看所有容器
docker ps -aqf “name=容器的名字” 查询容器ID
docker stop <container ID> 停止指定的容器,不指定为停止所有容器
docker rm 删除所有的容器
docker container [stop/start/restart] 停止/开启/重启容器
docker container kall <container ID> 强制停止容器
docker commit -p <container ID> container-backup 创建Docker的快照
把宿主机文件拷到容器里面
docker cp 要拷贝的文件路径 容器名: 要拷贝到容器里面对应的路径
容器里面拷文件到主机
docker cp 容器名: 要拷贝的文件在容器中的路径 要拷贝到宿主机器的响应路径
Docker搭建sqli-labs靶场
sqli-labs
靶场到了30关左右,需要使用linux
环境下来做题,windows
环境搭建可能无法满足。
首先启动docker
service docker start
查找sqli-labs镜像
sudo docker search sqli
由于默认的镜像较慢,我们使用阿里云镜像加速器进行加速。
- 注册阿里云账号并打开阿里云工作台
- 选择产品与服务并搜索容器镜像服务
- 选择左侧镜像工具栏中的镜像加速器
- 在
kali
中进行配置即可,前提条件是要启动docker
拉取镜像到本地
sudo docker pull acgpiano/sqli-labs
查看已有镜像
docker images
启动sqli-labs
环境:
sudo docker run -dt --name sqli -p 80:80 --rm acgpiano/sqli-labs
-dt
让其在后台运行
--name
给其命名
-p
本地端口:docker
中的端口是将docker
的端口映射到本地端口
--rm
容器退出后能自动清理容器内部的文件系统
docker ps -a
显示容器container
容器的id image
命令 端口
使用docker部署sqli-labs靶场
- 更换端口号
13306:3306
3306
为mysql
数据库端口
13306
为Apache
服务端口
sudo docker run -dt --name sqli -p 13306:3306 --rm acgpiano/sqli-labs
- 在终端命令行中输入
ipconfig
来查询docker
的IP
。 - 在本机上直接访问该
IP
地址。 - 若要停止
sqli-labs