基于docker的快速化部署DVWA靶场环境

简单描述docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 支持跨平台可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 一键部署的环境文件不仅小,大概只有几百兆。而且最厉害的是部署的网站环境,即使网站存在漏洞,被恶意拿到权限,因为docker这种沙箱机制,也不会被拿到服务器主机权限。

ubuntu16.04下载安装docker

安装docker

$sudo apt install docker.io

01

启动docker

切换到root用户下使用docker

service docker start

02

在docker hub中查找lamp环境并拉去到本地

docker searche lamp

03

docker pull tutum/lamp

04

查看本地拉取的镜像docker images

docker images

05

映射docker80端口到本地启动,进入docker bash环境下

docker run -i -t -p 80:80 tutum/lamp /bin/bash

06

初始化lamp环境

此lamp环境还自带了一些服务脚本可以一键启动web环境

首先要执行run.sh,初始化数据库,默认数据库root是没有密码的,给了一个admin账户及一个随机密码,这里不使用admin账户,如果root用户进不去,先使用admin进去一次退出就行。

071

待初始化完成后使用ctrl+c终止

072

给root用户设置密码,默认是没有密码的

进入mysql设置root密码。

mysql -uroot -p

回车,设置密码为123456。

set password for [email protected] = password('123456');

073

给root账户权限。

074

删除admin账户。

drop user [email protected]'%';

退出mysql

exit;

075

查看docker运行的情况

使用ctrl+p,ctrl+q退出docker的 bash 让docker在后台运行。

08

docker ps

081

上传本地网站源码到docker

使用docker cp上传本地源码到docke容器根目录下。

docker cp jddvwa 1967d9fb88f4:/

082

此处需要注意的是:

docker cp 、attach 后面的参数是容器id,不是镜像名,每次启动id都是不同的,如果每次启动docker镜像后都有修改,退出时记得一定要保存镜像,或者后台,否则直接退出docker上次的操作就没有了。

进入后台运行的docker

docker attach 1967d9fb88f4

083

删除网站根目录下默认的文件

cd /var/www/html
rm -rf ./*

084

复制网站源码到网站根目录下

cd /jddvwa
cp -r ./* /var/www/html

085

启动web容器apache2的服务

086

修改网站源码中的配置文件的

0861

默认为空,设置为123456

087

打开网页看见是否成功

09

保存此docker环境为一个镜像并导出

使用ctrl+p,ctrl+q退出docker的 bash 让后台在后台运行。

使用dcoker commit 保存为镜像

docker commit -m"aparke.cn" -a"zhaokaifei" 1967d9fb88f4 jddvwa

010

由上图可以看出docker下的Ubuntu环境搭打网站只有444mb。

使用dcoker export导出到本地

docker export 1967d9fb88f4 >jddvwa_docker.tar

011

使用dcoker import导入到本地docker文件

docker import jddvwa_docker.tar aparke/jddvwa

012

测试是否可以使用

停止之前启动的docker

docker stop 1967d9fb88f4

013

使用新导入的docker文件

docker run -i -t -p 80:80 aparke/jddvwa /bin/bash

014

访问成功

015

遇到的坑,数据库由于是人家提供的可能会遇到如下错误

016

解决,重新初始化数据库

mysql_install_db

017

参考上面的重新设置root密码。

或者自己去重新装一个mysql解决此问题。

附常用的docker命令

image.png