#每日三件事,第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,問題解決。
很多時候,問題很奇怪的時候,嘗試從頭開始,把環境清理到最初的狀況。還不行的話,重啓也是一種方式。