大致分为下面几个步骤

  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

awvs-images-0

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: #密码

awvs-images-1

清理

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 取消对应路径的文件权限即可删除 如图

awvs-images-2

提示

#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

awvs-images-3