Docker 安装与使用¶
Docker 是容器化平台,可以把应用和它的依赖打包成「镜像」,在任何机器上一键运行。做 CTF 靶场、部署 GZCTF、跑各类服务都会用到。
安装前:确认 Windows 版本¶
按 Win+R,输入 winver 回车,弹出窗口中查看版本号:
- 23H2(Build 22631)→ Docker Desktop 无法正常安装,先升级系统
- 24H2(Build 26100)→ 可以正常安装,继续往下看
23H2 请先升级到 24H2
经实测,Windows 11 23H2 存在 Docker Desktop 安装失败或启动报错的问题。直接升级到 24H2 即可解决,无需折腾其他替代方案。
升级方法:设置 → Windows 更新 → 检查更新,下载安装 24H2 版本后重启即可。
安装 Docker Desktop¶
前提:安装 WSL2¶
从 GitHub 下载 WSL 正式版安装包(.msixbundle),不要用 wsl --install 命令,命令安装的版本可能不是最新稳定版。
下载最新的 Microsoft.WSL_x.x.x.x_x64_ARM64.msixbundle 文件,双击安装,安装完成后重启电脑。
下载安装¶
双击 .exe 安装,安装过程中勾选 Use WSL 2 instead of Hyper-V。
安装完成后打开 Docker Desktop,等待左下角状态变为绿色 Engine running 即可。
将镜像存储迁移到 D 盘¶
Docker 镜像默认存在 C 盘,随着拉取的镜像增多可能占用数十 GB。强烈建议安装后立即迁移到 D 盘。
方法一:Docker Desktop 设置(推荐)¶
- 打开 Docker Desktop → 右上角齿轮 Settings
- 进入 Resources → Advanced
- 找到 Disk image location,点击右侧路径框修改为 D 盘路径,例如:
- 点击 Apply & Restart
Docker Desktop 会自动将现有数据迁移到新路径。
方法二:WSL2 手动迁移(彻底)¶
方法一本质上只移动了数据盘,WSL2 的系统盘仍在 C 盘。如需完整迁移,先完全退出 Docker Desktop,再执行:
# 1. 导出两个 WSL 发行版到 D 盘
New-Item -ItemType Directory -Force "D:\Docker"
wsl --export docker-desktop "D:\Docker\docker-desktop.tar"
wsl --export docker-desktop-data "D:\Docker\docker-desktop-data.tar"
# 2. 注销原有发行版(从 C 盘删除)
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
# 3. 重新导入到 D 盘
wsl --import docker-desktop "D:\Docker\docker-desktop" "D:\Docker\docker-desktop.tar" --version 2
wsl --import docker-desktop-data "D:\Docker\docker-desktop-data" "D:\Docker\docker-desktop-data.tar" --version 2
# 4. 删除临时 tar 文件
Remove-Item "D:\Docker\docker-desktop.tar"
Remove-Item "D:\Docker\docker-desktop-data.tar"
完成后重新打开 Docker Desktop,正常运行即迁移成功。
验证迁移结果:
常用命令速查¶
镜像管理¶
docker pull nginx:latest # 拉取镜像
docker images # 查看本地所有镜像
docker rmi nginx:latest # 删除镜像
docker image prune # 清理所有未使用的镜像
容器操作¶
# 运行容器(-d 后台,-p 端口映射,--name 指定名称)
docker run -d -p 8080:80 --name my-nginx nginx
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(含已停止)
docker stop my-nginx # 停止容器
docker start my-nginx # 启动已停止的容器
docker rm my-nginx # 删除容器(需先停止)
docker rm -f my-nginx # 强制删除运行中的容器
进入容器¶
docker exec -it my-nginx bash # 进入容器的 bash
docker logs my-nginx # 查看容器日志
docker logs -f my-nginx # 实时追踪日志
数据卷(持久化数据)¶
一键清理¶
Docker Compose¶
多个容器协同运行时使用 Compose,通过 docker-compose.yml 描述整个服务栈。
docker compose up -d # 后台启动所有服务
docker compose down # 停止并删除所有容器
docker compose logs -f # 查看所有服务日志
docker compose ps # 查看服务状态
GZCTF 就用 Docker Compose 部署
参见 GZCTF 部署。