原文链接: Dagger 支持导出镜像到本机了 | Akkuman 的技术博客

✨ Import image to local container runtime · Issue #8025 · dagger/dagger 这个 issue 从 2024.07 挂到现在(2025.07),官方总算是实现了

之前想使用 dagger 构建镜像并且导出到本地,需要先导出成 tarball 包,然后再使用本地的 docker load 进行导入

在昨天(2025.07.09),Allow loading Containers to host by jedevc · Pull Request #10662 · dagger/dagger 这个 PR 被合并了,后续就可以直接将 dagger 构建的镜像导出到本地了

等 Dagger 新版发布后,我们就可以使用如下命令进行导出了

  • dagger call base export-image --name myimage
  • dagger -c 'base | export-image myimage'

并且暴露了一个环境变量 _EXPERIMENTAL_DAGGER_RUNNER_IMAGESTORE

该变量支持两个值

  • containerd
  • docker-image

根据 Allow loading Containers to host by jedevc · Pull Request #10662 · dagger/daggerAllow loading Containers to host by jedevc · Pull Request #10662 · dagger/dagger 这两部分代码,我们可以看出这两个值的效果

  • containerd:默认使用 “github.com/containerd/containerd/defaults”.DefaultAddress,如果想自定义 containerd 地址,需配合 CONTAINERD_ADDRESS 环境变量使用
  • docker-image:需要保证 docker 命令存在(即存在 docker-cli),实际上内部的操作依旧是生成 tarball,然后管道调用 docker load,最后将对应的 imageid 设置为你定义的名称

总的来说,内置支持比之前自己写管道命令要省事一些,唯一的不爽就是 docker-image 居然是调用 docker-cli,就不能像 containerd 一样,直接调用 docker.sock 暴露的 api 吗