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,出现以下的结果,则表示环境安装成功。

相关文章
相关标签/搜索