-
星空体育入口:执行容器时实际上并非必须使用Docker镜像。尽管这种说法有些夸大其词,但确实属实:容器镜像仅是rootfs的组织方式,若提前准备了rootfs,则不必依赖容器镜像。
- 时间:2024-06-24 来源:zoc7RcITctunhMtq7EzA 人气:
[[439964]]
接下来,我们通过一个实际案例来演示一下,展示如何使用runc直接启动容器。使用以下命令可以创建一个名为my_container的文件夹并进入其中:mkdir my_container && cd my_container。然后运行runc spec命令即可生成一个config.json配置文件。这份文件大致包含以下内容
{"ociVersion": "1.0.1-dev", "process": { "terminal": true,{"user":{"uid":0, "gid":0}}args": ["sh"], "cwd": "/", "env": [...], "能力": { ... }, "资源限制": [ ... ] }, "根": { "路径": "根文件系统",{"只读": true}, "主机名": "runc", "挂载点": [...],Linux"系统中的"命名空间"功能允许进程运行时在不同的隔离环境中执行,包括"PID"类型和"网络"类型。{"类型":"ipc"},\n{"类型":"uts"},{"type": "mount"} 这段文字描述的内容是RUNC格式的标准要素,主要包括定义启动命令、环境变量、根文件系统、主机名、挂载点、命名空间等。首先我们新建一个名为rootfs的文件夹。接着编写一个Go程序,用于打印主机名,编译后将其复制到rootfs文件夹中。
星空体育官方
$ cat <<EOF > main.go package main import "fmt" import "os" func main() { fmt.Println(os.Hostname()) } EOF $ GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o printme $ mv printme rootfs/
接着启动容器
$ sudo runc create mycont1 $ sudo runc start mycont1
这样就能直接输出”runc“(因为上述spec定义了hostname为runc)。對應容器而言,只需要一個rootfs星空体育网站。至於這個rootfs是如何生成的,容器本身其實并不關心。对于容器来说,只需有一个rootfs 就够了,并不需要关心rootfs是如何生成的。而使用overlay或其他方式创建它根本无需担心。有时候,你需要做一些改变来实现你的梦想星空体育网页版。
星空体育手机版
星空体育登录入口
星空体育官方 星空体育手机版