跳到主要内容

如何使用 sealos作为私有容器仓库

工作原理

每个节点都会运行一个 image-cri-shim 守护进程,Kubelet 在拉取镜像的时候会发起一个 grpc 交互命令到 image-cri-shim。该进程会根据镜像名字在私有仓库里面查找,存在则从本地拉取,否则从远端拉取。

执行如下命令来验证 image-cri-shim 守护进程状态:

$ systemctl status image-cri-shim.service 

私有仓库在哪里运行

sealos 的私有仓库默认运行在集群的第一个节点上,第一个节点是指创建集群的时候输入的第一个节点的地址,使用下面的命令查看守护进程的状态。

$ systemctl status registry.service 

注意:仓库的数据保存在 /var/lib/sealos/data/default/rootfs/registry/ 目录下。

登录私有容器镜像仓库

sealos 私有仓库使用 --net host 参数运行在 HTTP 下,应当在本地配置 insecure-registries,然后使用第一个节点的 IP 地址进行连接,Docker 客户端配置参考如下:

# cat /etc/docker/daemon.json 
{
"insecure-registries": ["192.168.1.10:5000"],
}

使用 sealos login 命令来进行登录,默认用户名与密码是 admin:passw0rd

sealos login -u admin -p passw0rd 192.168.1.10:5000

也可以使用 docker login 命令。

docker login -u admin -p passw0rd 192.168.1.10:5000 

推送与拉取镜像

推送镜像案例:

$ sealos tag quay.io/skopeo/stable 192.168.72.50:5000/skopeo/stable
$ sealos push 192.168.72.50:5000/skopeo/stable
Using default tag: latest
The push refers to repository [192.168.72.50:5000/skopeo/stable]
a98b3d943f46: Pushed
b48290351261: Pushed
f39ec3c22bd5: Pushed
e5a31cf70f11: Pushed
b9394289d761: Pushed
c550c8e0f355: Pushed
latest: digest: sha256:238efd85942755fbd28d4d23d1f8dedd99e9eec20777e946f132633b826a9295 size: 1570

拉取镜像案例:

sealos pull 192.168.72.50:5000/skopeo/stable

或者使用 docker pull 命令:

docker pull 192.168.72.50:5000/skopeo/stable