k8s:如何快速制作自己的 images:非dockerfile方式

如题。?

说起来,还得是靠docker——对,Docker公司的docker产品。

因为docker是先驱、曾经的事实标准、是集大成着(或比较混杂)。

dockerd + docker 工具 可以完成 容器镜像 image 的直接 save、load,也支持运行的容器container直接打包【本质是Filesystem Hierarchy Standard,FHS合规】的tar包的export、import。

由此,我们可以在现有image或container的基础上,通过docker变相制作自己的image。

 

即:

contarinerd + ctr  ---->  dockerd + docker  ----> 制作自己的image  ----> contarinerd + ctr

需要注意:

  k8s 运行在 contarinerd 的【k8s.io】的命名空间内;

  docker 运行在 containerd的【moby】的命名空间内;

       ctr 或说containerd 运行在 containerd的【default】的命名空间内;

 

附注1: 

  docker 的export 与 import 是 将运行的容器container打包成合乎FHS的普通tar包。这个tar包只能通过docker客户端工具使用,与ctr工具的export和import不同! docker的save与load才是将镜像image打包成离线便携的符合OCI规范的tar包并加载的功能。

  ctr没有提供自定义镜像的功能!ctr只能通过export、imort功能来导出或加载离线便携的符合OCI规范的tar包。

 

附注2:

  nerdctl 虽然号称兼容docker工具并增强了一些功能。

  but

  但是

  nerdctl 并没有提供制作自定义image的相关功能! 它本质还是和ctr靠齐步的!

 

 

 

  

posted on 2022-10-18 09:43  jinzhenshui  阅读(323)  评论(0)    收藏  举报