使用 containerd 在 Kubernetes 内运行 docker

Yur*_*vin 8 docker kubernetes containerd

自 K8S v1.11 起,运行时从 dockerd 更改为 Containerd。我使用 Jenkins 而不是 kubernetes 在 Docker (dood) 之外使用 Docker 构建 docker 镜像。

当我尝试切换到使用常规 docker 客户端的 conatinerd 套接字文件(containerd/containerd.sock 映射到 /var/run/docker.sock)时,出现以下错误Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json: net/http: HTTP/1.x transport connection broken: malformed HTTP response "\x00\x00\x00\x04\x00\x00\x00\x00\x00".

docker客户端可以和containerd一起使用吗?

Ric*_*ico 3

免责声明:截至撰写本文时,containerd 尚未取代 Docker,您可以独立于 Docker安装containerd ,并且可以指向Kubernetes CRI直接与containerd 套接字通信。

因此,当您安装 Docker 时,它会与 containerd 一起安装,并且Docker 守护进程会与其通信。你会看到这样的过程:

docker-containerd --config /var/run/docker/containerd/containerd.toml
Run Code Online (Sandbox Code Playgroud)

然而,Docker 客户端仍然与 Docker 守护进程对话,这就是为什么当你在容器中运行 Docker 客户端时,你仍然需要直接与 Docker 守护进程对话 ( /var/run/docker.sock),所以你可以切换回/var/run/docker.sock,我相信它应该可以工作。