运行容器其实不需要Docker镜像
云计算
这个有点标题党的意思,但确实是事实:容器的镜像只是组织rootfs,如果我们提前准备好rootfs,那么就不需要容器的镜像。

这个有点标题党的意思,但确实是事实:容器的镜像只是组织rootfs,如果我们提前准备好rootfs,那么就不需要容器的镜像。

下面我们通过一个实战演示一下,如何直接通过runc启动容器。

 

  1. $ mkdir my_container && cd my_container 
  2. $ runc spec 

 

通过spec命令便可以生成一个config.json文件。文件的内容大概是下面这样的

 

  1.     "ociVersion""1.0.1-dev"
  2.     "process": { 
  3.         "terminal"true
  4.         "user": { 
  5.             "uid": 0, 
  6.             "gid": 0 
  7.         }, 
  8.         "args": [ 
  9.             "sh" 
  10.         ], 
  11.         "cwd""/"
  12.         "env": [ ... ], 
  13.         "capabilities": { ... }, 
  14.         "rlimits": [ ... ] 
  15.     }, 
  16.     "root": { 
  17.         "path""rootfs"
  18.         "readonly"true 
  19.     }, 
  20.     "hostname""runc"
  21.     "mounts": [ ... ], 
  22.     "linux": { 
  23.         "namespaces": [ 
  24.             { "type""pid" }, 
  25.             { "type""network" }, 
  26.             { "type""ipc" }, 
  27.             { "type""uts" }, 
  28.             { "type""mount" } 
  29.         ] 
  30.     } 

 

里面就是标准的RUNC格式,主要是定义了启动命令、env、rootfs、主机名、mount挂载、namespace等。

然后我们创建一个rootfs目录

 

  1. $ mkdir rootfs 

然后我们写一个打印主机名的Go程序,编译后并拷贝到rootfs里面。

 

  1. $ cat <<EOF > main.go 
  2. package main 
  3.  
  4. import "fmt" 
  5. import "os" 
  6.  
  7. func main() { 
  8.     fmt.Println(os.Hostname()) 
  9. EOF 
  10.  
  11. $ GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o printme 
  12. $ mv printme rootfs/ 

 

然后启动容器

 

  1. $ sudo runc create mycont1 
  2. $ sudo runc start mycont1 

 

便可以直接输出”runc“(因为上面spec定义的hostname就是runc)。

 

所以对应容器来说,只是需要一个rootfs,其实这个rootfs是怎么生成的,它其实并不关心。至于是不是用overlay 制作的更是无从感知。

 

责任编辑:华轩 来源: 今日头条

同话题下的热门内容

携手构建丹东纺织工业互联网平台,助力纺织业专精特新企业数字化转型自动化的云优化会取代DevOps人员的工作吗?创建云迁移测试策略指南监控云流量的七种QoS优秀实践2022年针对云计算基础设施的网络犯罪威胁将不断上升2022 年值得关注的三个云安全趋势改进边缘计算进行数据处理的优秀实践三大核心优势,亚马逊云科技助力跨国企业植根中国

编辑推荐

一文让你看懂IaaS、PaaS和SaaS看完小白也能懂什么是公有云、私有云、混合云Hyper-V深度评测六:虚拟机迁移方面的改进IOUG主席谈Oracle云服务战略和大数据用途你在 Docker 中跑 MySQL?恭喜你,好下岗了!
我收藏的内容
点赞
收藏

51CTO技术栈视频号