手把手构建AWVS的docker镜像

大致分为下面几个步骤:

  1. 拉取debian基础镜像, 安装基础环境
  2. 添加awvs 和 license 到镜像, 并进行初始安装
  3. 构建镜像,并上传docker hub
  4. 使用镜像创建 awvs 容器
    docker run -d -it  --cap-add LINUX_IMMUTABLE -p 3443:3443 --name awvs k9scc/awvs:v15.4 /bin/bash /opt/awvs/start.sh
  5. 删除容器

1. 创建基础镜像

Dockerfile

FROM debian
RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list &&\
    apt update &&\
    apt -y install net-tools libx11-6 libxcomposite1 libxdamage1 libxext-dev libxfixes-dev libxrandr-dev libasound2 libatk-adaptor libatk-bridge2.0-0 libatk-bridge2.0-dev libatspi2.0-0 libcairo2 libcups2 libdbus-1-3 libdrm2 libexpat1 libgbm1 libgio-cil libglib2.0-0 libglib-perl librust-gobject-sys-dev libnspr4 libnss3 libpango-1.0-0 libxkbcommon0 sudo systemctl

构建包含基础环境镜像

docker build -t debian-env  .

#查看构建好的镜像
docker images

file

2. 使用上面的镜像创建一个容器, 并且把应用添加到镜像

安装awvs, app文件夹里面存放awvs安装文件和license文件
docker run -it --name awvs-init debian-env bash

#另外打开一个终端
docker cp app awvs-init:/opt/awvs
安装awvs, 此时安装好后时未激活状态

安装步骤

1. >>> 回车

2. ---More--- q #按键盘q

3. Accept the license terms? [yes|no]
[no] >>> yes #输入yes

4. Hostname [a366*****23]: awvs #随便输

5 Configuring the master user...
    Email: admin@admin.com  #登陆邮箱
    Password:               #密码
    Password again:         #密码

file

清理

apt clean all
cd /opt/awvs
rm acunetix_15.4.230222085_x64.sh install.log

3. 构建镜像, 并上传到docker hub

构建镜像
docker commit awvs-init awvs:init
上传dockerhub
#登陆dockerhub
docker login
    username
    password

#打标签,然后上传镜像
docker tag awvs:init 用户名/仓库名:标签
docker push 用户名/仓库名:标签

4. 使用

创建容器
docker run -d -it  --cap-add LINUX_IMMUTABLE -p 3443:3443 --name awvs k9scc/awvs:v15.4 /bin/bash /opt/awvs/start.sh

这里使用了 --cap-add LINUX_IMMUTABLE是为了方便chattr命令锁定lisense文件

start.sh内容

add_entry_to_hosts () {
  local hostname=$1
    echo "Adding $hostname entry."
    echo -e "127.0.0.1  $hostname\n::1  $hostname" >> /etc/hosts
}
add_entry_to_hosts "erp.acunetix.com"
add_entry_to_hosts "telemetry.invicti.com"
add_entry_to_hosts "updates.acunetix.com"

su -l acunetix -c "/home/acunetix/.acunetix/start.sh"
第一次创建容器后的时候需要运行crack.sh

进入容器

docker exec -it awvs bash

#进入容器后
    cd /opt/awvs/
    bash start.sh

5. 删除容器

因为使用了特殊权限,删除会提示错误, chattr -i 取消对应路径的文件权限即可删除
如图
file

提示

#docker rm awvs
Error response from daemon: container 2810520df0d51b693522e97d0328d01ddbc8abb5caf88576f8df83d1ae07451a: driver "overlay2" failed to remove root filesystem: unlinkat /var/lib/docker/overlay2/81b0d118aa36af991ffdee8e12d8a831df10653d73af7df3c195e92dd885afe6/diff/home/acunetix/.acunetix/data/license/license_info.json: operation not permitted

#路径为
/var/lib/docker/overlay2/81b0d118aa36af991ffdee8e12d8a831df10653d73af7df3c195e92dd885afe6/diff/home/acunetix/.acunetix/data/license/
docker rm awvs

#这里的路径改成自己的
 chattr -i /var/lib/docker/overlay2/81b0d118aa36af991ffdee8e12d8a831df10653d73af7df3c195e92dd885afe6/diff/home/acunetix/.acunetix/data/license/license_info.json
chattr -i /var/lib/docker/overlay2/81b0d118aa36af991ffdee8e12d8a831df10653d73af7df3c195e92dd885afe6/diff/home/acunetix/.acunetix/data/license/wa_data.dat

file