6 Star 72 Fork 28

JustryDeng / notebook

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
[02]ctr、nerdctl常用指令.md 14.43 KB
一键复制 编辑 原始数据 按行查看 历史
邓沙利文 提交于 2022-08-25 19:10 . k8s相关

ctr、nerdctl常用指令

提示:ctr是containerd自带的命令行工具,而nerdctl是对ctr工具的一个补充

命名空间相关

提示:containerd有命名空间的概念,不同命名空间的所有资源都是互相隔离的;所以如果不是直接使用的containerd,而是第三方集成containerd使用时,都需要指定命名空间,如:

  • 当k8s集成containerd时,使用ctr或enrdctl处理镜像给k8s使用时,需要指定命名空间为k8s的命名空间:--namespace k8s.io
  • 当docker集成containerd时,使用ctr或enrdctl处理镜像给docker使用时,需要指定命名空间为k8s的命名空间:--namespace moby

ctr常用指令

指令 说明
ctr namespaces create {命名空间} 创建命名空间
ctr namespaces ls 查看命名空间
ctr namespaces rm {命名空间} 移除命名空间
ctr namespaces label {命名空间} {标签} 给命名空间添加标签
如:ctr namespaces label dev labelA=123
...... ......

nerdctl常用指令

指令 说明
nerdctl namespace create {命名空间} 创建命名空间
nerdctl namespace ls 查看命名空间列表
nerdctl namespace inspect {命名空间} 查看命名空间详情
nerdctl namespace remove {命名空间} 移除命名空间
...... ......

镜像仓库相关

nerdctl常用指令

指令 说明
nerdctl login -u {username} -p {password} {serverAddress} 验证是否能够登录镜像仓库
注:nerdctl login -h查看更多参数
示例:nerdctl login --insecure-registry -u root -p pwd123 https://harbor.insupro.com
nerdctl logout 登出
...... ......

镜像相关

提示:containerd有命名空间的概念,不同命名空间的所有资源都是互相隔离的;所以如果不是直接使用的containerd,而是第三方集成containerd使用时,都需要指定命名空间,如:

  • 当k8s集成containerd时,使用ctr或enrdctl处理镜像给k8s使用时,需要指定命名空间为k8s的命名空间:--namespace k8s.io
  • 当docker集成containerd时,使用ctr或enrdctl处理镜像给docker使用时,需要指定命名空间为k8s的命名空间:--namespace moby

ctr常用指令

指令 说明
ctr images ls 查看镜像
ctr images rm {镜像名} 删除镜像
ctr images rm $(ctr images ls -q) 删除所有镜像
ctr images pull {镜像名} 拉取镜像
示例:ctr images pull --all-platforms docker.io/library/redis:latest

--skip-verify:跳过ssl认证
--plain-http:允许使用http
--user:输入用户名密码,username[:password]
示例:ctr images pull --user 用户名:密码 --plain-http 镜像地址
注:ctr images pull -h查看更多参数
ctr images push {镜像名} 推送镜像
--skip-verify:跳过ssl认证
--plain-http:允许使用http
--user:输入用户名密码,username[:password]
示例:ctr images push --user 用户名:密码 --plain-http 镜像地址
注:ctr images push -h查看更多参数
ctr images export {镜像文件} {镜像名} 导出镜像
注:导出的镜像文件名自取即可
示例:ctr images export --all-platforms redis.image docker.io/library/redis:latest
注:若导出时报类似于ctr: content digest sha256:xxxxxx not found这样的错误,那么你再pull拉镜像时,就需要指定--all-platforms参数,导出时也需要指定该参数
ctr images import {镜像文件} 导入镜像
示例:ctr images import redis.image
ctr images tag {镜像名} {新镜像名} 修改镜像标签
示例:ctr images tag docker.io/library/redis:latest docker.io/library/redis:alpha
...... ......

nerdctl常用指令

指令 说明
nerdctl pull {镜像} 拉取镜像
示例:nerdctl pull docker.io/library/redis:latest
示例:nerdctl pull redis:latest
nerdctl images --names

nerdctl images
查看镜像列表
--names:展示完整的镜像名
nerdctl tag {镜像名} {镜像别名} 给镜像创建一个别名
示例:nerdctl tag redis:latest my-redis
nerdctl tag redis:latest my-redis:alpha
nerdctl save -o {镜像文件} {镜像} 导出镜像
示例:nerdctl save -o redis.img.gz redis:latest
注:镜像文件自定义命名即可
nerdctl load -i {镜像文件} 导入镜像
示例:nerdctl load -i redis.img.gz
nerdctl rmi {镜像名/镜像id} 删除镜像
nerdctl rmi $(nerdctl images -q) 删除所有镜像
nerdctl build -t {镜像} {上下文} 构建镜像
示例:nerdctl build -t my-nginx:my-tag .
注:构建镜像时,可以通过-f指定Dockerfile文件名,
如果不指定,则默认找上下文中名为"Dockerfile"的
文件作为Dockerfile;机制类似于docker中
Docker上下文环境、Dockerfile与build命令》,
毕竟docker也算是对containerd的一层封装
nerdctl pull {镜像} 拉取镜像
--insecure-registry:跳过ssh认证,允许走http
注:nerdctl pull -h查看更多参数
示例:nerdctl push --insecure-registry harbor.k8s.local/library/busybox:1.35.0
nerdctl push {镜像} 推送镜像
--insecure-registry:跳过ssh认证,允许走http
注:nerdctl push -h查看更多参数
示例:nerdctl push --insecure-registry harbor.k8s.local/library/busybox:1.35.0
...... ......

容器相关

提示:containerd有命名空间的概念,不同命名空间的所有资源都是互相隔离的;所以如果不是直接使用的containerd,而是第三方集成containerd使用时,都需要指定命名空间,如:

  • 当k8s集成containerd时,使用ctr或enrdctl处理容器给k8s使用时,需要指定命名空间为k8s的命名空间:--namespace k8s.io
  • 当docker集成containerd时,使用ctr或enrdctl容器给docker使用时,需要指定命名空间为k8s的命名空间:--namespace moby

ctr常用指令

指令 说明
ctr containers ls 查看已创建的容器
ctr containers create {镜像} {容器名} 创建并运行容器
ctr containers info {容器id/容器名} 查看容器详情
ctr containers rm {容器id/容器名} 删除容器
ctr containers rm $(ctr containers ls -q) 删除所有容器
ctr tasks start {容器id/容器名} 创建(与容器同名的)task
-d:后台运行
示例:ctr tasks start -d my-redis-container
ctr tasks kill {task名称} 停止task
ctr tasks rm {task名称} 删除task
ctr tasks rm $(ctr tasks ls -q) 删除所有task
ctr tasks ls 查看task状态

nerdctl常用指令

指令 说明
nerdctl ps 列出运行中的容器
-a:显示所有的容器,包括未运行的
-q:静默模式,只显示容器编号
nerdctl inspect {容器id/容器名} 查看容器详情
nerdctl logs {容器id/容器名} 查看容器日志
nerdctl logs -f {容器id/容器名} 实时查看容器日志
nerdctl logs -f {容器id/容器名} >> tmp.log 将日志输出到文件(前台进行)
nerdctl logs -f {容器id/容器名} >> tmp.log & 将日志输出到文件(后台进行)
nerdctl run {参数} {镜像} 创建并启动容器
示例:
nerdctl run -d --name=jd-nginx -p 9527:80 --mount type=bind,source=/usr/local/web/,destination=/usr/share/nginx/html/ nginx:latest
-d:将容器放入后台运行
-p: 为容器配置端口映射,{宿主机端口}:{容器端口}
-name: 为容器指定名称
-m(或-memory): 设置内存的使用限额,如:-m100M,-m200G
--memory-swap: 设置内存+swap的使用限额,如:--memory-swap=300M
-restart:指定容器退出时是否重启
--mount: 绑定挂载--mount type=bind,source={宿主机中的目录},destination={容器中的目录}
更多参数可输入nerdctl --help进行查看
nerdctl exec -it {容器id/容器名} bash(或:nerdctl exec -it {容器id/容器名} sh) 进入容器
注:shell类型有很多种,但是sh类型的shell是
最基础的,所以大部分镜像都支持,而bash
类型的shell并不是基础的,所以有的精简版
的镜像,是不支持bash进入的
ctr + d(或输入exit回车) 退出容器
nerdctl start {容器id/容器名} 启动已有容器
nerdctl stop {容器id/容器名} 停止容器
nerdctl rm {容器id/容器名} 删除容器
nerdctl stop $(nerdctl ps -a -q) 停止所有的容器
nerdctl rm $(nerdctl ps -a -q) 删除所有容器
nerdctl cp 容器id(或容器name):要复制的文件全路径文件(夹)名 要复制到Linux上的文件夹位置 复制指定容器ID(或指定容器名)的容器中的指定文件到 Linux下的指定位置
如:nerdctl cp 4b3d1c56a7e7:/docker-entrypoint.sh /root/
nerdctl cp Linux上要复制的文件(夹)全路径文件名 容器id(或容器name):要复制到Docker中的文件夹位置 复制Linux下制定文件到指定容器ID(或指定容器名)的容器中的指定路径下
如:nerdctl cp /tmp/yum.log 4b3d1c56a7e7:/root/
...... ......

相关资料

1
https://gitee.com/JustryDeng/notebook.git
git@gitee.com:JustryDeng/notebook.git
JustryDeng
notebook
notebook
master

搜索帮助