# containerd教程 - 6 namespace管理
namespace 也就是命名空间,命名空间其实就是为了更好的管理容器,可以为容器分组,在不同的分组中,可以存在同名的容器。
namespace 的操作可以使用 ctr namespaces
、ctr namespace
、ctr ns
,这三个命令是一样的,使用这三个都可以。
可以使用如下帮助命令,查看 namespace 有哪些操作:
ctr namespace --help
下面来介绍一下 namespace 的常用操作,这些命令也之前镜像的也类似。
# 6.1 查看namespace
查看有哪些 namespace:
ctr ns ls
可以看到本地默认就有一个 namespace,default
命名空间:
root@doubibiji-server:~# ctr ns ls
NAME LABELS
default
root@doubibiji-server:~#
2
3
4
我们之前下载的镜像和创建的容器都在这个 namespace 中。
如果要查看 namespace 中有哪些镜像,可以使用如下命令:
ctr -n default image ls
上面的命令是在 ctr image ls
命令的基础上添加全局选项 -n 命令空间
表示指定命名空间,或者使用 -namespace 命名空间
。
命令会列出 default 命名空间下的镜像。
同样,可以查看命名空间下的容器:
ctr -n defualt c ls
上面的命令是在 ctr c ls
命令的基础上添加全局选项 -n 命令空间
。
执行结果:
root@doubibiji-server:~# ctr -n default c ls
CONTAINER IMAGE RUNTIME
my-nginx docker.io/library/nginx:latest io.containerd.runc.v2
2
3
# 6.2 创建namespace
创建 namespace 使用如下命令:
ctr namespace create doubi
ctr namespace create
:创建命名空间的命令,可以使用ctr ns create
;doubi
:doubi 是命名空间的名字,自己定义;
如何在指定的 namespace 下创建容器呢?
如果要在指定的 namespace 下创建容器,需要先在该命名空间下下载镜像,在别的命名空间下的镜像,是无法使用的。
在命名空间下操作镜像、容器和任务,都需要添加全局参数,指定命名空间。
通过 ctr --help
命令可以查看到帮助信息,其中可以指定 namespace 的全局选项:
# 1 下载镜像
ctr -n doubi images pull docker.io/library/nginx:latest
上面下载镜像的时候,指定了命名空间是 doubi
。
此时查看到 doubi
命名空间下的镜像:
# 2 创建并启动容器
下载完成,可以指定命名空间,在命名空间下创建和启动容器:
ctr -n doubi run -d docker.io/library/nginx:latest my-nginx
此时查看到 doubi
命名空间下的容器:
root@doubibiji-server:~# ctr -n doubi c ls
CONTAINER IMAGE RUNTIME
my-nginx docker.io/library/nginx:latest io.containerd.runc.v2
2
3
查看 doubi
命名空间下的任务:
root@doubibiji-server:~# ctr -n doubi task ls
TASK PID STATUS
my-nginx 7007 RUNNING
2
3
可以看出操作命名空间下的镜像、容器、任务,只需要在原来的命令上添加命令空间的全局现象即可。
# 6.3 删除namespace
删除 namespace 使用如下命令:
ctr namespace remove doubi
ctr namespace remove
:删除命名空间的命令,可以使用ctr rm create
;doubi
:doubi 是命名空间的名字;
删除命名空间的时候,命名空间下不能存在镜像、容器等信息,需要把它们先删掉。