Docker入门

Docker简介

Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。

Docker在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等的,极大的简化了容器的创建和维护。使得Docker技术比虚拟化技术更为轻便、快捷。

传统的虚拟机技术是虚拟出一套硬件之后,在其上运行一个完整的操作系统,在该系统上再运行其所需要的应用进程;而容器的应用进程直接运行与宿主的内核,容器内没有自己的内核,而且没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

鉴于Docker上面的这些特性,很适合在Web安全中搭建各种环境,包括php代码审计的环境和各种漏洞的环境。在Github上面目前有人就使用Docker来搭建各种漏洞环境,做得比较好的是P牛的vulhub和Medicean的VulApps

Docker入门使用

Docker的入门可以参考书籍docker_practice

下面就以一个最简单的php的环境为例来进行说明。
一般情况下,使用Docker环境都会存在两个文件Dockerfiledocker-compose.yml
Dockerfile,主要就是在搭建环境时需要运行的一些命令
docker-compose.yml,主要就是用来组织多个容器的。例如常见的lamp环境就涉及到了nginx,mysql和php环境,这些容器组织在一起就需要靠docker-compose.yml这个文件了。
创建文件夹dockerlearn(在实际环境中,此文件夹的名字可以任意),在文件夹中分别创建文件index.php,Dockerfile,docker-compoer.yml

index.php

<?php
phpinfo();
?>

Dockerfile

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的环境

  • RUN docker-php-ext-install mysqli,安装额外的组件mysqli

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

posted @ 2017-06-05 16:12  babers  阅读(221)  评论(0编辑  收藏  举报