❝都知道,K8s弃用Docker,正式使用
❞Containerd
将其取代,但是经过那么久的时间相处,对Docker的使用习惯还是比较难改变。但是containerd
自带的CLI
工具ctr
和crictl
目前存在很多短板,不够友好。
ctr
的设计对人类不太友好,例如缺少以下这些和 Docker 类似的功能:
docker run -p
docker run --restart=always
~/.docker/config.json
来拉取镜像 docker logs
crictl
工具相对ctr
来说稍微友好一些,crictl还没有tag命令
,但是还上没有docker
使用上那么丝滑呀。
nerdctl
工具真心丝滑nerdctl run -d -p 8080:80 --name=nginx --restart=always nginx #和使用docker一样丝滑
docker run -d -p 8080:80 --name=nginx --restart=always nginx
nerdctl
具备很多docker
不具备的功能,如延迟拉镜像,镜像加密等。
nerdctl
具备但是Docker
不具备的一些功能lazy-pulling
imgcrypt
nerdctl push --sign=cosign --cosign-key cosign.key devopps/hello-world
nerdctl pull --verify=cosign [email protected] --certificate-oidc-issuer=https://accounts.example.com devopps/hello-world
nerdctl run --net foo --net bar
nerdctl pull --all-platforms IMAGE
nerdctl run -it --rootfs /bin/sh
nerdctl run --label nerdctl/bypass4netns=true
nerdctl
github 下载链接:
❝https://github.com/containerd/nerdctl/releases[2]
❞
安装方法比较简单,将下载的二进制文件解压到$PATH
目录即可
wget https://github.com/containerd/nerdctl/releases/download/v1.4.0/nerdctl-1.4.0-linux-amd64.tar.gz
tar Cxzvvf /usr/local/bin nerdctl-1.4.0-linux-amd64.tar.gz
安装好 nerdctl
后,就可以使用 nerdctl
来运行容器了。前提是先安装好Containerd
哈。
nerdctl run -d -p 80:80 --name=nginx --restart=always nginx:alpine
nerdctl
构建镜像需要先安装软件:buildkit
将其解压到 $PATH
中:
wget https://github.com/moby/buildkit/releases/download/v0.8.2/buildkit-v0.8.2.darwin-amd64.tar.gz
tar -C /usr/local/ -zxvf buildkit-v0.8.2.linux-amd64.tar.gz
编写 systemd unit
文件:
# cat /etc/systemd/system/buildkit.service
[Unit]
Description=BuildKit
Documentation=https://github.com/moby/buildkit
[Service]
ExecStart=/usr/local/bin/buildkitd --oci-worker=false --containerd-worker=true
[Install]
WantedBy=multi-user.target
启用 buildkit.service 并设置开机自动运行:systemctl enable --now buildkit.service
接下来就是镜像的构建了,使用方法与docker完全一样!不再描述
命令 | docker/nerdctl | ctr | crictl |
---|---|---|---|
查看运行的容器 | docker/nerdctl ps | ctr task ls/ctr container ls | crictl ps |
查看镜像 | docker/nerdctl images | ctr image ls | crictl images |
查看容器日志 | docker/nerdctl logs | 无 | crictl logs |
查看容器数据信息 | docker/nerdctl inspect | ctr container info | crictl inspect |
查看容器资源 | docker/nerdctl stats | 无 | crictl stats |
启动/关闭已有的容器 | docker/nerdctl start/stop | ctr task start/kill | crictl start/stop |
运行一个新的容器 | docker/nerdctl run | ctr run | 无(最小单元为 pod) |
打标签 | docker/nerdctl tag | ctr image tag | 无 |
创建一个新的容器 | docker/nerdctl create | ctr container create | crictl create |
导入镜像 | docker/nerdctl load | ctr image import | 无 |
导出镜像 | docker/nerdctl save | ctr image export | 无 |
删除容器 | docker/nerdctl rm | ctr container rm | crictl rm |
删除镜像 | docker/nerdctl rmi | ctr image rm | crictl rmi |
拉取镜像 | docker /nerdctl pull | ctr image pull | ctictl pull |
推送镜像 | docker/nerdctl push | ctr image push | 无 |
登录或在容器内部执行命令 | docker/nerdctl exec | 无 | crictl exec |
清空不用的容器 | docker/nerdctl image prune | 无 | crictl rmi --prune |
登录镜像仓库 | docker/nerdctl login | 无 | 无 |
查看网络情况 | docker/nerdctl network ls | ||
查看数据卷情况 | docker/nerdctl volume ls |
使用 bypass4netns 加速无根容器: https://github.com/containerd/nerdctl/blob/main/docs/rootless.md
[2]https://github.com/containerd/nerdctl/releases: https://github.com/containerd/nerdctl/releases
本文由 mdnice 多平台发布