我的笔记

创建私有网络

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