容器相关命令解析

一、命名空间相关

貌似在docker里面没有命名空间
容器启动的时候,默认会在默认的命名空间中启动 即 default
可以通过-n 指定命名空间
Docker 使用的 containerd 下面的命名空间默认是 moby,而不是 default
所以假如我们有用 docker 启动容器,那么我们也可以通过 ctr -n moby
同样 Kubernetes 下使用的 containerd 默认命名空间是 k8s.io,所以我们可以使用 ctr -n k8s.io 来查看 Kubernetes 下面创建的容器

  1. 查看命名空间

ctr ns ls

  1. 创建命名空间

ctr ns create my-ns

  1. 删除命名空间

ctr ns rm my-ns
ctr ns remove my-ns

  1. 指定命名空间操作

ctr -n test i ls -q

一、镜像相关命令

  1. 拉取镜像
  • docker

docker pull nginx:latest

  • containerd

ctr i pull docker.io/library/nginx:latest ctr i pull –all-platforms docker.io/library/nginx:latest

  1. 列出镜像
  • docker

docker images

  • containerd

ctr i ls [-q 只显示名称]

  1. 镜像重新打标签
  • docker

docker tag nginx:latest harbor.k8s.local/course/nginx:latest

  • containerd

ctr i tag docker.io/library/nginx:alpine harbor.k8s.local/course/nginx:alpine

  1. 删除镜像
  • docker

docker rmi nginx:latest docker rmi hashID

  • containerd

ctr i rm docker.io/library/nginx:alpine

  1. 推送本地镜像
  • docker
  • containerd
  1. 将镜像挂载到主机目录
  • docker

不知道,每用过

  • containerd

ctr i mount docker.io/library/nginx:alpine /mnt

  1. 将镜像从主机目录上卸载
  • docker

不知道,每用过

  • containerd

ctr i unmount /mnt 因为挂在的时候挂在到了 /mnt 所以卸载的时候直接卸载 /mnt

  1. 将镜像导出为压缩包 在使用export命令是需要添加–platform参数,否则会报错。
  • docker

不知道,每用过

  • containerd

ctr image export –all-platforms nginx.tar.gz
ctr image export –platform=linux/amd64 nginx.tar.gz

  1. 从压缩包导入镜像
  • docker

不知道,每用过

  • containerd

ctr i import nginx.tar.gz

如果 直接导入可能会出现类似于 ctr: content digest sha256:xxxxxx not found 的错误,要解决这个办法需要 pull 所有平台镜像:

➜  ~ ctr i pull --all-platforms docker.io/library/nginx:alpine
➜  ~ ctr i export --all-platforms nginx.tar.gz docker.io/library/nginx:alpine
➜  ~ ctr i rm docker.io/library/nginx:alpine
➜  ~ ctr i import nginx.tar.gz

二、容器相关

容器相关的很多操作在docker中从来每用过, 也就不去写对比的命令了, 以后用到再查

  1. 创建容器, 理解就是只创建不运行, 在docker里从来每这么用过
  • docker
  • containerd

ctr c create docker.io/library/nginx:alpine nginx

  1. 列出容器
  • docker

docker ps | docker ps -a

  • containerd

ctr c ls

  1. 查看容器详细配置
  • docker
  • containerd

ctr c info nginx

  1. 删除容器
  • docker
  • containerd 除了使用 rm 子命令之外也可以使用 delete 或者 del 删除容器

ctr c rm nginx

  1. 启动容器
  • docker

docker start nginx

  • containerd

ctr task start -d nginx

  1. 暂停容器
  • docker

docker stop nginx

  • containerd

ctr task pause nginx

  1. 恢复容器
  • docker

docker start nginx

  • containerd

ctr t resume nginx #resume 继续,重新开始

  1. 启动容器
  • docker
  • containerd
  1. 进入容器
  • docker

docker exec -it nginx sh

  • containerd 必须要指定 –exec-id 参数,这个 id 可以随便写,只要唯一就行

ctr task exec –exec-id 0 -t nginx sh

  1. 查看正在运行的容器
  • docker

docker ps containerd ctr task ls [-q]

  1. 杀掉容器
  • docker 没用过

docker kill -s KILL mynginx

  • containerd ctr里面没有stop 只能暂停或者杀掉

ctr t kill nginx

  1. 删除容器
  • docker

docker rm nginx

  • containerd 要想删除一个正在运行的Task,必须先kill掉这个task,然后才能删除

ctr c rm nginx

  1. 取容器的内存、CPU 和 PID 的限额与使用量
  • docker

docker stats

  • containerd

ctr t metrics nginx

  1. 查看容器中所有进程在宿主机中的 PID
  • docker

docker top nginx

  • containerd

ctr task ps nginx

  1. 查看容器的日志
  • docker

docker logs nginx

  • containerd

ctr task logs nginx