You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Go Docker SDK创建的本地Docker镜像无法找到

解答

核心原因:Docker客户端上下文不匹配

Colima运行独立的Docker daemon,而Go SDK默认初始化的客户端未读取Colima设置的环境变量,导致镜像构建到了与终端docker命令不同的daemon实例中,因此终端无法查看到镜像。

解决步骤

  1. 对齐Docker客户端连接参数
    初始化Docker客户端时,明确使用环境变量中的配置,确保和终端docker命令连接同一daemon:

    cli, err := client.NewClientWithOpts(client.FromEnv)
    

    也可以手动指定Colima的socket路径(替换为你的实际用户名):

    cli, err := client.NewClientWithOpts(client.WithHost("unix:///Users/你的用户名/.colima/default/docker.sock"))
    

    或者通过os.Getenv("DOCKER_HOST")动态获取当前终端的Docker连接地址。

  2. 修复构建上下文的冗余配置
    代码中ImageBuildOptions重复设置了Context: reader,这是不必要的(ImageBuild的第二个参数已经是上下文的tar reader),会导致上下文异常,移除该字段:

    imageBuildResponse, err := cli.ImageBuild(
        ctx,
        reader,
        types.ImageBuildOptions{
            Tags:       []string{"newname"},
            Dockerfile: "Dockerfile",
        })
    
  3. 验证上下文一致性
    在终端执行docker context ls确认当前上下文为colima;同时在代码中输出DOCKER_HOST的值,确保和终端环境一致:

    fmt.Println("当前DOCKER_HOST:", os.Getenv("DOCKER_HOST"))
    

macOS+Colima的注意事项

  • Colima的Docker daemon运行在独立虚拟机中,socket路径与Docker Desktop不同,必须确保客户端连接正确的socket。
  • 切换Colima实例(多profile)时,需要同步调整DOCKER_HOST环境变量或客户端连接参数。
  • 避免同时运行Docker Desktop和Colima,否则容易出现上下文混乱,导致镜像分散在不同daemon中。

内容的提问来源于stack exchange,提问作者asymmetriq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:45:39