本镜像是基于 chainguard/static 的极简容器镜像,内置 dlv(Delve)CLI 工具。dlv 是 Go 语言官方推荐的调试器,支持断点调试、变量监视、调用栈分析等功能。本镜像旨在提供轻量、安全、开箱即用的 Go 程序调试环境,适用于开发、测试及容器化场景下的 Go 应用调试。
dlv CLI 工具,支持 Go 程序的本地调试、远程调试及核心调试能力(断点、变量查看、调用栈追踪等)。chainguard/static 静态基础镜像,可直接运行于各类容器环境(无需额外依赖动态链接库)。chainguard/static 构建,镜像体积极小(通常 < 20MB),减少资源占用。chainguard 系列镜像的安全特性,包含最小化***面、非 root 用户运行(默认)、镜像签名验证等安全加固。dlv,拉取镜像后可直接执行调试命令。amd64、arm64 等主流架构(具体依赖 chainguard/static 基础镜像的平台支持)。dlv,调试本地 Go 项目(无需在宿主机安装 dlv)。dlv 执行调试相关的自动化步骤(如条件断点验证、异常场景复现)。从容器仓库拉取镜像(以 Docker Hub 为例,实际仓库需替换为镜像源地址):
bashdocker pull <镜像仓库地址>/dlv-static:latest
1. 验证 dlv 版本
运行容器并执行 dlv version 命令,验证工具可用性:
bashdocker run --rm <镜像仓库地址>/dlv-static:latest dlv version
输出示例:
Delve Debugger Version: 1.21.0 Build: $Id: xxxxxxxxxx $
2. 调试本地 Go 程序
将本地 Go 项目代码挂载到容器内,使用 dlv debug 启动调试会话:
bash# 假设本地 Go 项目路径为 ./my-go-app,入口文件为 main.go docker run --rm -v $(pwd)/my-go-app:/app -w /app <镜像仓库地址>/dlv-static:latest dlv debug main.go
此时容器内会启动 dlv 交互式调试会话,支持设置断点(b main.main)、运行(c)、下一步(n)等标准调试命令。
3. 远程调试容器内 Go 程序
如需通过宿主机 IDE(如 VS Code、Goland)远程连接容器内的 dlv 调试会话,需配置 dlv 以无头模式(headless)运行并暴露调试端口:
bash# 启动容器,暴露调试端口 2345,挂载项目代码并启动 headless 调试 docker run --rm -p 2345:2345 -v $(pwd)/my-go-app:/app -w /app <镜像仓库地址>/dlv-static:latest \ dlv debug main.go --headless --listen=0.0.0.0:2345 --api-version=2 --accept-multiclient
宿主机 IDE 可通过 localhost:2345 连接调试会话,实现远程断点调试。
通过 docker-compose.yml 定义调试环境,简化多容器或复杂挂载场景的配置:
yamlversion: '3.8' services: dlv-debug: image: <镜像仓库地址>/dlv-static:latest volumes: - ./my-go-app:/app # 挂载本地 Go 项目代码 working_dir: /app ports: - "2345:2345" # 暴露调试端口 command: ["dlv", "debug", "main.go", "--headless", "--listen=0.0.0.0:2345", "--api-version=2"]
启动调试环境:
bashdocker-compose up
dlv 工具支持丰富的命令参数,常用参数如下(使用时需追加到容器启动命令中):
| 参数 | 说明 |
|---|---|
debug <file> | 编译并调试指定 Go 文件(默认入口为 main.go) |
--headless | 以无头模式运行(无交互式终端,适合远程连接) |
--listen=<addr> | 指定调试服务监听地址(如 0.0.0.0:2345,允许外部连接) |
--api-version=<n> | 指定调试 API 版本(通常设为 2,兼容主流 IDE) |
--accept-multiclient | 允许多个客户端同时连接调试会话(如 IDE 和命令行同时调试) |
--log | 输出调试日志(用于排查连接问题) |
chmod 调整宿主机目录权限或添加 --user root 参数(仅调试场景使用,生产环境避免)。--listen=0.0.0.0:2345 会暴露端口到公网,建议通过防火墙限制访问,或仅在可信环境中使用。dlv 版本需与目标 Go 程序的编译版本匹配(如 Go 1.21 需 dlv 1.21+),建议使用镜像标签指定版本(如 dlv-static:1.21)而非 latest。dlv 与目标进程在同一网络命名空间(可通过 --net=container:<target-container> 共享网络)。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务