容器相关命令解析
一、命名空间相关
貌似在docker里面没有命名空间
容器启动的时候,默认会在默认的命名空间中启动 即 default
可以通过-n 指定命名空间
Docker 使用的 containerd 下面的命名空间默认是 moby,而不是 default
所以假如我们有用 docker 启动容器,那么我们也可以通过 ctr -n moby
同样 Kubernetes 下使用的 containerd 默认命名空间是 k8s.io,所以我们可以使用 ctr -n k8s.io 来查看 Kubernetes 下面创建的容器
- 查看命名空间
ctr ns ls
- 创建命名空间
ctr ns create my-ns
- 删除命名空间
ctr ns rm my-ns
ctr ns remove my-ns
- 指定命名空间操作
ctr -n test i ls -q
一、镜像相关命令
- 拉取镜像
- docker
docker pull nginx:latest
- containerd
ctr i pull docker.io/library/nginx:latest ctr i pull –all-platforms docker.io/library/nginx:latest
- 列出镜像
- docker
docker images
- containerd
ctr i ls [-q 只显示名称]
- 镜像重新打标签
- 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
- 删除镜像
- docker
docker rmi nginx:latest docker rmi hashID
- containerd
ctr i rm docker.io/library/nginx:alpine
- 推送本地镜像
- docker
- containerd
- 将镜像挂载到主机目录
- docker
不知道,每用过
- containerd
ctr i mount docker.io/library/nginx:alpine /mnt
- 将镜像从主机目录上卸载
- docker
不知道,每用过
- containerd
ctr i unmount /mnt 因为挂在的时候挂在到了 /mnt 所以卸载的时候直接卸载 /mnt
- 将镜像导出为压缩包 在使用export命令是需要添加–platform参数,否则会报错。
- docker
不知道,每用过
- containerd
ctr image export –all-platforms nginx.tar.gz
ctr image export –platform=linux/amd64 nginx.tar.gz
- 从压缩包导入镜像
- 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中从来每用过, 也就不去写对比的命令了, 以后用到再查
- 创建容器, 理解就是只创建不运行, 在docker里从来每这么用过
- docker
- containerd
ctr c create docker.io/library/nginx:alpine nginx
- 列出容器
- docker
docker ps | docker ps -a
- containerd
ctr c ls
- 查看容器详细配置
- docker
- containerd
ctr c info nginx
- 删除容器
- docker
- containerd 除了使用 rm 子命令之外也可以使用 delete 或者 del 删除容器
ctr c rm nginx
- 启动容器
- docker
docker start nginx
- containerd
ctr task start -d nginx
- 暂停容器
- docker
docker stop nginx
- containerd
ctr task pause nginx
- 恢复容器
- docker
docker start nginx
- containerd
ctr t resume nginx #resume 继续,重新开始
- 启动容器
- docker
- containerd
- 进入容器
- docker
docker exec -it nginx sh
- containerd 必须要指定 –exec-id 参数,这个 id 可以随便写,只要唯一就行
ctr task exec –exec-id 0 -t nginx sh
- 查看正在运行的容器
- docker
docker ps containerd ctr task ls [-q]
- 杀掉容器
- docker 没用过
docker kill -s KILL mynginx
- containerd ctr里面没有stop 只能暂停或者杀掉
ctr t kill nginx
- 删除容器
- docker
docker rm nginx
- containerd 要想删除一个正在运行的Task,必须先kill掉这个task,然后才能删除
ctr c rm nginx
- 取容器的内存、CPU 和 PID 的限额与使用量
- docker
docker stats
- containerd
ctr t metrics nginx
- 查看容器中所有进程在宿主机中的 PID
- docker
docker top nginx
- containerd
ctr task ps nginx
- 查看容器的日志
- docker
docker logs nginx
- containerd
ctr task logs nginx