#每日三件事,第5天/2#
前言
Docker最大的一个特点就是应用系统和环境同时发布,更不用提前为应用系统部署环境。
按照以往的惯例,一个应用系统使用的环境是Linux+mysql+php+nginx+……你得先安装Linux操作系统,然后再按要求部署mysql、PHP以及Nginx等等。关键是安装的时候还得关注开发人员使用的是什么版本,你的应用环境和开发人员的环境版本如果有差异的话,很有可能在部署过程中会出现意想不到的问题。
而Docker就是来解决这个问题的。
以往要想安装个靶场,得照着说明一步一步来。好一点儿的靶场直接做成一个虚拟机,大概有5-10G的样子,下载回来后有虚拟机就可以用了。如果网络不好,或者是服务器在国外的话,仅一个下载就够头疼的了。
bwapp就是练习SQL注入特别好的一个靶场,关键是被做成了docker的镜像。
1、下载bwapp
docker pull raesene/bwapp
记不住这个名字也没关系,搜索一样可以用:
docker search bwapp
然后再使用docker pull raesene/bwapp,把镜像文件下载到本地。下载之后可以用查看:
docker images
2、运行一个bwapp的容器
如果你使用linux或者windows的话,直接运行就可以。如果是Mac的话,最好先创建一个网络,免得网络有问题。
创建一个bridge网络:
docker network create -d bridge --subnet 192.168.10.0/24 --gateway 192.168.10.1 MyNet
-d:driver,默认的就是bridge,还有host,none之类的;
--subnet:写清楚网卡所在的网段;
--gateway:就是网关的地址;
docker自己有DHCP和NAT,这样启动起来的容器可以直接和外面连通。
查看刚刚创建的网络,其实是创建一个网卡MyNet,用这个网卡桥接容器的网卡,让容器和宿主机甚至互联网进行通信。Mac上没有Docker0的网卡,和windows、linux不一样。
运行bwapp容器:
docker run -dit --name bwapp01 --net MyNet -p 8888:80 image_id
-dit,d:是后台运行;i:交互式;t:tty终端;
--name:给启动的容器取个名字,不重复,好记就可以;
--net MyNet :容器的网卡和MyNet进行桥接;
-p: 就是宿主机的端口和容器的端口做个映射;
image_id:就是通过docker images看到的bwapp的id。
3、使用bwapp练习sql注入
用你的浏览器直接输入http://localhost:8888/install.php就可以进入bwapp了。安装完成后,登录的用户是bee,密码是bug。
4、可能遇到的问题
在安装bwapp的过程中,我遇到了宿主机ping不同容器,而容器能ping通宿主机的情况。在排错过程中发现其它容器和bwapp也能互相ping通,问题很奇怪。
登录到bwapp的容器内部(使用命令docker exec -ti bwapp01 /bin/bash),没有防火墙之类的东西。
最后把其它容器都删掉,然后重启docker,问题解决。
很多时候,问题很奇怪的时候,尝试从头开始,把环境清理到最初的状况。还不行的话,重启也是一种方式。