GoLand连Docker容器时缓存残留主要在三处:一是GoLand配置目录下的docker/子目录(如~/.cache/JetBrains/GoLand*/docker);二是容器内$GOCACHE未清理;三是Docker构建缓存及GoLand记录的端口映射、挂载路径等元数据。

GoLand 连 Docker 容器时,缓存残留主要在哪
GoLand 本身不管理容器镜像或构建缓存,但当你用它连接 Docker(比如通过「Docker」工具窗口、Remote Development via Docker Compose 或调试容器内进程)时,会生成三类关联缓存:一是本地挂载路径下的 target/ 或 bin/(虽然 Go 项目不用 target/,但某些 Dockerfile 会写死该路径);二是 GoLand 自动创建的容器绑定配置目录(如 ~/.cache/JetBrains/GoLand*/docker/);三是 Docker Desktop 或 CLI 留下的构建缓存(docker buildx bake 或 docker builder prune 不清理 GoLand 特定元数据)。
删掉 GoLand 的 Docker 绑定配置缓存
这些配置不会随卸载 GoLand 自动清除,且可能干扰新版本识别容器环境。关键路径如下:
-
rm -rf ~/Library/Caches/JetBrains/GoLand*/docker(macOS) -
rm -rf ~/.cache/JetBrains/GoLand*/docker(Linux) -
rm -rf %LOCALAPPDATA%\JetBrains\GoLand*\docker(Windows)
注意:GoLand* 会匹配所有版本号目录(如 GoLand2026.1),无需手动补全;若用 JetBrains Toolbox 安装,还要确认 ~/jetbrains-toolbox/instances/ 下对应实例的 config/docker/ 子目录是否已清空。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
清理容器内 Go 构建产物,别只盯本地 $GOCACHE
你改了代码却在容器里看不到效果?大概率是容器内的 $GOCACHE 没清——GoLand 默认不进容器执行 go clean -cache。解决方法分两步:
- 进容器手动清:
docker exec -it <container-name> sh -c "go clean -cache"</container-name> - 若用
docker-compose.yml启动,建议在build.args或environment中显式设GOCACHE=/tmp/go-cache,再配合tmpfs挂载确保每次启动都干净:tmpfs: /tmp/go-cache - 避免把
./bin或./pkg挂载进容器——它们不是标准 Go 缓存位置,但若被误挂载,会覆盖容器内真实构建产物,导致行为不一致
为什么 docker system prune -a 不够用
这条命令能清镜像、容器、网络和构建缓存,但它不会动 GoLand 在宿主机上记录的容器元数据(比如上次调试用的端口映射、挂载路径快照、gopls 连接配置)。这些残留会导致:
- 重启 GoLand 后,“Attach to Process” 列表里还显示已删容器的 PID
- Docker 工具窗口反复报 “Connection refused” 却找不到对应容器
- 远程调试时端口被占,但
lsof -i :8080查不到进程——其实是 GoLand 缓存了旧的转发规则
真正要断干净,得先关掉 GoLand,再删上述 docker/ 目录,最后再跑 docker system prune -a。顺序不能反,否则 GoLand 可能重新写入旧状态。

















