Docker入門

Docker簡介

Docker使用Google公司推出的Go語言進行開發實現,基於Linux內核的cgroup,namespace,以及 AUFS 類的 Union FS 等技術,對進程進行封裝隔離,屬於操做系統層面的虛擬化技術。因爲隔離的進程獨立於宿主和其它的隔離的進程,所以也稱其爲容器。php

Docker在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等的,極大的簡化了容器的建立和維護。使得Docker技術比虛擬化技術更爲輕便、快捷。html

傳統的虛擬機技術是虛擬出一套硬件以後,在其上運行一個完整的操做系統,在該系統上再運行其所須要的應用進程;而容器的應用進程直接運行與宿主的內核,容器內沒有本身的內核,並且沒有進行硬件虛擬。所以容器要比傳統虛擬機更爲輕便。python

鑑於Docker上面的這些特性,很適合在Web安全中搭建各類環境,包括php代碼審計的環境和各類漏洞的環境。在Github上面目前有人就使用Docker來搭建各類漏洞環境,作得比較好的是P牛的vulhub和Medicean的VulAppsmysql

Docker入門使用

Docker的入門能夠參考書籍docker_practicenginx

下面就以一個最簡單的php的環境爲例來進行說明。
通常狀況下,使用Docker環境都會存在兩個文件Dockerfiledocker-compose.yml
Dockerfile,主要就是在搭建環境時須要運行的一些命令
docker-compose.yml,主要就是用來組織多個容器的。例如常見的lamp環境就涉及到了nginx,mysql和php環境,這些容器組織在一塊兒就須要靠docker-compose.yml這個文件了。
建立文件夾dockerlearn(在實際環境中,此文件夾的名字能夠任意),在文件夾中分別建立文件index.php,Dockerfile,docker-compoer.ymlgit

index.phpgithub

<?php
phpinfo();
?>

Dockerfileweb

FROM vulhub/php:5.6-apache

MAINTAINER spoock <me@spoock.com>

RUN docker-php-ext-install mysqli

COPY index.php /var/www/html/index.php
  • FROM vulhub/php:5.6-apache,從https://hub.docker.com/r/vulhub上面拉取php5.6和apache的環境sql

  • RUN docker-php-ext-install mysqli,安裝額外的組件mysqlidocker

  • COPY index.php /var/www/html/index.php,將當前目錄下的index.php拷貝到docker容器中的/var/www/html/index.php中。

docker-compose.yml

version: '2'
services:
  web:
    build: .
    depends_on:
      - mysql
    ports:
      - 8080:80
  mysql:
    image: mysql:5
    environment:
      - MYSQL_ROOT_PASSWORD=root

depends_on,說明web服務須要的mysql容器的支持
ports,表達將容器中的80端口映射到宿主主機的8080端口
mysql,表示的就是mysql的容器的相關信息。

環境搭建

Docker安裝

下面是以ubuntu16.04爲例來講明docker的安裝和使用。

在ubuntu16.04下安裝docker和docker-compose

# 安裝pip,若是有則不須要進行安裝
curl -s https://bootstrap.pypa.io/get-pip.py | python3

# 安裝docker
apt-get update && apt-get install docker.io

# 創建docker用戶組
sudo groupadd docker
sudo usermod -aG docker $USER

# 啓動Docker
service docker start

# 安裝compose
pip install docker-compose

漏洞搭建

成功安裝docker以後,就能夠搭建上面的那個示例程序了。

# 進入到dockerlearn文件夾中
cd /path/to/dockerlearn

# 自動化編譯環境
docker-compose build

# 啓動整個環境
docker-compose up -d

編譯完成以後,在瀏覽器中訪問localhost:8080,出現以下的結果,則表示環境安裝成功。

相關文章
相關標籤/搜索