Skip to content

Latest commit

 

History

History
86 lines (49 loc) · 1.95 KB

containerd介绍.md

File metadata and controls

86 lines (49 loc) · 1.95 KB

containerd 介绍

最新版本的 docker 都是通过 containerd 来管理镜像和容器的。

containerd 也是 docker 提取开源并送给 CNCF 的开源项目。

kubernetes 也可以直接使用 containerd。

containerd 官网:https://containerd.io/

containerd 官网的文档比较简单,只有一个 overviewGetting started

更多文档在:https://github.com/containerd/containerd/tree/master/docs

Overview

containerd 的各种库放在了GitHub中:

containerd/containerd 主要的代码库,包含容器运行时。

containerd/containerd.io containerd 的官方网站

containerd/cri containerd 的 CRI 插件

containerd/project 跨容器存储库使用的实用程序,例如脚本,通用文件和核心文档

containerd/ttrpc 容器使用的gRPC版本(专为低内存环境设计)

Getting started

安装完 docker 后,系统中已经有 containerd 了,下面来写代码:

package main

import (
	"context"
	"github.com/containerd/containerd"
	"github.com/containerd/containerd/namespaces"
	"log"
)

func main() {
	client, err := containerd.New("/run/containerd/containerd.sock")
	if err != nil {
		log.Fatalln(err)
	}

	defer client.Close()
	ctx := namespaces.WithNamespace(context.Background(), "example")
	image, err := client.Pull(ctx, "docker.io/library/redis:alpine", containerd.WithPullUnpack)
	if err != nil {
		log.Fatalln(err)
	}
	log.Printf("Successfully pulled %s image\n", image.Name())
}

注意因为 containerd 还不支持 go modules,所以应该把代码放到 $GOPATH/src 目录下才行。

编译:

$ go build

执行:

$ sudo ./containerd-test
2020/03/22 20:57:08 Successfully pulled docker.io/library/redis:alpine image

可以了,测试通过。