[英]Unable to retrieve data from Docker-managed containerd by using containerd-based CLI directly
這是我想要完成的事情:
運行 Docker 並能夠從 containerd 的 API 管理其圖像/容器。 這純粹是一種教育練習。
我試過的:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mcr.microsoft.com/dotnet/runtime latest ec54a6c985a0 11 days ago 186MB
$ nerdctl --address /var/run/docker/containerd/containerd.sock -n moby images
REPOSITORY TAG IMAGE ID CREATED SIZE
package main
import (
"context"
"log"
"github.com/containerd/containerd"
"github.com/containerd/containerd/namespaces"
)
func main() {
if err := test(); err != nil {
log.Fatal(err)
}
}
func test() error {
client, err := containerd.New("/var/run/docker/containerd/containerd.sock")
if err != nil {
return err
}
defer client.Close()
ctx := namespaces.WithNamespace(context.Background(), "moby")
images, err := client.ListImages(ctx)
if err != nil {
return err
}
log.Printf("%v images\n", len(images))
return nil
}
我獲得成功連接的事實表明事情正在正確的軌道上。 我只是不明白為什么在 Docker 命令和直接調用 containerd 之間沒有看到相同的結果。
從 Docker 維護者 Sebastiaan van Stijn 那里得到了答案:
dockerd 使用 containerd 的運行時組件,但不是(還沒有?)圖像存儲和快照器,這就是為什么你看不到圖像,只有容器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.