wooyun容器
安装参考:
v7hinc/wooyun - Docker Image | Docker Hub
dockerfile
V7hinc/wooyun_final: 根据hanc00l和m0l1ce提供的数据构建docker版的乌云漏洞库,包含8.8W漏洞信息 (github.com)
FROM centos:7
MAINTAINER V7hinc
ENV WOOYUN_DB="wooyun"
ENV DB_Root_Password="wooyun"
ENV SITE_ROOT /home/wwwroot/default
RUN set -x;\
yum -y install wget git;\
cd /tmp;\
# 安装lamp
wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz;\
tar zxf lnmp1.7.tar.gz && cd lnmp1.7;\
# lnmp脚本无人值守命令解释:DBSelect="6"表示MariaDB 5.5、PHPSelect="5"表示PHP5.6、SelectMalloc="1"表示不安装内存分配器、ApacheSelect="1"表示Apache2.2,其他请查看https://lnmp.org/faq/v1-5-auto-install.html
LNMP_Auto="y" DBSelect="6" DB_Root_Password="${DB_Root_Password}" InstallInnodb="y" PHPSelect="5" SelectMalloc="1" ApacheSelect="1" ServerAdmin="" ./install.sh lamp;
# 进入网站根目录
WORKDIR ${SITE_ROOT}
# 网站源码拉取
RUN set -x;\
# 清除网站根目录下的默认数据
rm -rf *;\
# 拉取网站源码到当前目录
git clone https://github.com/V7hinc/wooyun_final.git ./;\
# 删除Dockerfile文件
rm -rf Dockerfile;\
# 替换数据库密码
sed -i "s/root\")/${DB_Root_Password}\")/" conn.php;
# wooyun数据库恢复
RUN set -x;\
# 开启mariadb
lnmp mariadb restart;\
# 创建数据库wooyun
create_db_sql="create database IF NOT EXISTS ${WOOYUN_DB}";\
mysql -hlocalhost -P3306 -uroot -p${DB_Root_Password} -e "${create_db_sql}";\
# 下载数据库源文件
echo "正在下载wooyun_bugs_db.tar.bz2文件";\
wget -c https://github.com/V7hinc/wooyun_final/releases/download/1.0/wooyun_bugs_db.tar.bz2;\
# 解压数据库源文件到wooyun数据库目录下
tar xjvf wooyun_bugs_db.tar.bz2 -C /usr/local/mariadb/var/${WOOYUN_DB};\
# 清除压缩包
rm -rf wooyun_bugs_db.tar.bz2;
# 编写开机启动脚本
RUN set -x;\
echo "#!/bin/bash" >> /autostart.sh;\
# nginx 重启
echo "lnmp restart;" >> /autostart.sh;\
# 保持前台
echo "/bin/bash;" >> /autostart.sh;\
chmod 755 /autostart.sh;
VOLUME ["${SITE_ROOT}/upload"]
EXPOSE 80
EXPOSE 3306
# 切换进入docker容器默认路径为网站根目录
WORKDIR ${SITE_ROOT}
ENTRYPOINT ["/autostart.sh"]
镜像分析
docker查找该镜像
docker search wooyun
docker 拉取镜像容器
docker pull v7hinc/wooyun
导出镜像,保存为wooyun.tar(需要几十秒时间,看镜像的大小)
docker save -o wooyun.tar v7hinc/wooyun
解压缩该tar文件:
首先查看manifest.json
的内容,可以看出该文件一共包含了三个字段,Config
、RepoTages
和Layers
。
-
Config
的值为镜像配置文件的json
文件,对应733242646ba649f19be0efe15eb0dfee995e0ae431fdcce76688a072f82925d3.json
; -
RepoTages
为镜像的名称和标签; -
Layers
包含了镜像的有哪些层,每一个元素代表一个层目录,由此可见ubuntu含有五个层,对应33b5e87a65b65985a0445827bd27436b3467bb578d1b1cc2aa0b6000685fb4bf/layer.tar
e203e4e9c0ac9eb1226cb20ac3da1946c2378ad4574b6c7d31f91edd5bfd2617/layer.tar
519c3f049f3fdc543f41ade13ec96b2