---
title: 用 Docker 在自己电脑上搭一套漏洞靶场（全程不出网）
site: 星湖の小窝
category: 运维
tags: [Docker, 靶场, 安全, 运维]
date: 2026-09-22
updated: 2026-09-22
id: note-docker-lab
---

# 用 Docker 在自己电脑上搭一套漏洞靶场（全程不出网）

想练手又不想碰别人的系统，最省事的办法是在自己机器上跑一套"故意有洞"的应用。Docker 让这件事变成几条命令。

### 准备工作

- 装 Docker Desktop（Windows / macOS）或 docker + docker-compose（Linux）
- 确认磁盘留出至少 10GB
- 不需要外网 —— 镜像拉好之后可以完全离线跑

### 一个最小可用环境

建一个 `docker-compose.yml`：

```yaml
services:
  dvwa:
    image: vulnerables/web-dvwa
    ports:
      - "127.0.0.1:8080:80"
    restart: unless-stopped
```

启动：

```bash
docker compose up -d
# 浏览器打开 http://127.0.0.1:8080 ，默认账号 admin / password
```

> 注意 `127.0.0.1:8080:80` 这个写法：只把端口绑到本机回环。写成 `8080:80` 会监听所有网卡，同一 Wi-Fi 下的其他人也能访问到一个满是漏洞的站点 —— 那就不叫练习环境了。

### 再加一个现代一点的

```yaml
  juice:
    image: bkimminich/juice-shop
    ports:
      - "127.0.0.1:3000:3000"
```

Juice Shop 覆盖的问题类型更现代（前端逻辑、接口越权等），和 DVWA 互补。

### 用完就扔

```bash
docker compose down     # 停掉并删除容器
docker compose up -d    # 需要时重新起，环境干净如初
```

这正是容器比虚拟机方便的地方：搞坏了不用修，删掉重来。

### 几条纪律

- 端口只绑 `127.0.0.1`
- 不要在靶场里放任何真实数据
- 练习时不需要给防火墙开洞
