docker network create --driver bridge --subnet 172.16.7.0/24 private-net
# docker network create:创建网络的子命令。
# --driver bridge:指定网络驱动为桥接模式(这也是默认模式,其实不写也可以,但写上更严谨)。
# --subnet 172.16.7.0/24:限定该网络的网段。
# private-net:你要创建的网络名称。
docker compose -f docker-compose-mysql-vulnlab.yml up -d
# -f 参数,指定对应的 docker-compose 文件进行启动
MySQL 数据库
version: '3.8'
services:
vulnlab-mysql-5.7:
image: registry.cn-hangzhou.aliyuncs.com/lanhuli/mysql:5.7
container_name: vulnlab-mysql-5.7
restart: always # 容器崩溃或宿主机重启后自动重启
environment:
MYSQL_ROOT_PASSWORD: rootpassword # MySQL root 用户的初始密码(请按需修改)
MYSQL_DATABASE: vulnlab # 容器启动时自动创建的默认数据库
# 未配置 ports 映射,防止数据库暴露到宿主机公网
networks:
private-net:
ipv4_address: 172.16.7.101 # 在 private-net 网络中绑定固定 IP
networks:
private-net:
external: true # 改为 external: true,直接使用外部已创建的网络
连接:docker exec -it vulnlab-mysql-5.7 mysql -uroot -prootpassword
Gitea
直接映射端口
services:
server:
image: docker.gitea.com/gitea:1.24.3-rootless
container_name: gitea # 自定义容器名
restart: always
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
无端口映射,使用 Nginx 反向代理
version: '3.8'
services:
server:
image: docker.gitea.com/gitea:1.24.3-rootless
container_name: gitea
restart: always # 容器崩溃或宿主机重启后自动重启
volumes:
- ./data:/var/lib/gitea # 挂载 Gitea 的数据文件目录
- ./config:/etc/gitea # 挂载 Gitea 的配置文件目录
- /etc/timezone:/etc/timezone:ro # 同步宿主机时区(只读)
- /etc/localtime:/etc/localtime:ro # 同步宿主机本地时间(只读)
# 已移除 ports 字段,取消对外端口映射
networks:
private-net:
ipv4_address: 172.16.7.103 # 在 private-net 网络中绑定固定 IP
# 网络配置:直接引用已经由 MySQL 容器创建好的外部网络
networks:
private-net:
external: true # 声明该网络已由外部事先创建,不在此 Compose 中重复创建
SQL 注入靶场-oracle
version: '3.8'
networks:
oracle-injection:
driver: bridge
services:
oracle-db:
image: registry.cn-hangzhou.aliyuncs.com/lanhuli/oracle:11g
container_name: oracle-injection-oracle
environment:
- ORACLE_ALLOW_REMOTE=true
restart: always
networks:
- oracle-injection
php-apache:
image: registry.cn-hangzhou.aliyuncs.com/lanhuli/apache-php-oracle:latest
container_name: oracle-injection-php-apache
ports:
- "8088:80"
volumes:
- ./html:/var/www/html # 核心:将本地代码目录挂载到容器中
restart: always
networks:
- oracle-injection
拉取靶场代码,将对应的文件夹映射在 YAML 文件里修改好
使用 docker compose up -d 进行镜像拉取和启动。
vulnlab 靶场
version: '3.8'
services:
vulnlab:
image: registry.cn-hangzhou.aliyuncs.com/lanhuli/vulnlab:latest # 原版 yavuzlar/vulnlab
container_name: vulnlab
ports:
- "1337:80"
restart: unless-stopped