1108.1005天:Docker 部署bwapp

#每日三件事,第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,问题解决。

很多时候,问题很奇怪的时候,尝试从头开始,把环境清理到最初的状况。还不行的话,重启也是一种方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章