问题标签 [runc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cloud-foundry - 通过 Garden API 在 Runc 容器中执行流程
我有一个Cloud Foundry Bosh Lite安装,在我的本地开发机器上运行了Garden/Runc 支持,并在其上托管了一个应用程序。我可以 ssh 进入 Diego cell 虚拟机并执行
这将产生以下输出:
我以为我可以通过调用Garden API来实现同样的目的
但是,这将返回
不幸的是,这什么也没告诉我。我尝试添加"user":"vcap"
JSON 有效负载,但结果是相同的。当我添加时,-H "Content-Type: application/json" -d
我得到
问题:如何通过 Garden API 在容器内执行任意命令并检索其输出?
docker - libcontainer、runc 和 nsenter 引导程序
我对 docker/containers 相当陌生,并且试图通过查看代码来更好地理解它。
看看 runC,它看起来就像旧代码库中的 nsinit 一样使用 libcontainer,我试图以此为起点来了解如何使用 libcontainer,并更深入地了解 libcontainer 的工作原理。
我发现有点难以理解的一件事是引导过程和对 nsexec 的 C 代码的调用。
我确实广泛理解,在调用应用程序(runC/libcontainer)可以将控制权交给容器进程之前,需要对命名空间等进行一些初始化,但我似乎无法找到一个好的逐步解释。有谁知道这方面的任何好的文档?
我是否正确假设作为此引导过程的一部分,C 代码将使用“init”cmd 行标志回调到 runC 的(克隆/子级)?
docker - CF Garden-runC as a container orchestration engine?
I have been looking at Garden-runC / Guardian and am wondering if it can be used outside of CloudFoundry as a container orchestration engine.
From what I have been able to understand so far:
A garden client can use the Garden API to talk to a backend implementation (in this case Gaurdian), which would be able to deploy a container using its runtime (runC).
It would also perhaps require a wshd process to be packaged as part of the container, as that is what garden seems to use to control execution of processes inside the container.
While I realise that it's a lot more complex than that, and I am not sure how the backend would get the image it needs, etc., would it at least in theory be possible to use Garden / Guardian as a container orchestration engine?
json - 如何备份和恢复 docker 容器(没有原始 docker run 命令)
我希望能够将容器状态“冻结”到文件中,如果容器被意外删除,稍后再恢复。这是为了防止意外删除容器。
然后,我尝试docker export
了一个 tar 文件,docker import
但它会创建docker 文件系统的映像……而不是容器本身。我知道我可以docker run
从此图像中使用,但我不是容器创建者,我不知道最初使用什么命令来创建它。
我还尝试使用它和fromdocker-runc
重新创建容器,但我发现这并不容易,我想要一个“不那么 hack-ish”的解决方案。rootfs
config.json
/run/docker/libcontainerd/CONTAINER_ID/config.json
目前,我知道实现这一点的唯一方法是创建 docker 主机 VM 的快照,如果有人不小心删除了容器,请恢复快照。但上一次发生这种情况时,最后一次备份是在 16 小时前进行的,我丢失了之后创建的所有数据(而且恢复过程也花了很多时间)。
我只是想将容器状态保存到一个文件中,并能够在删除时重新创建它。
docker - Slackware 14.2 中的 runc 安装错误
我正在尝试通过 SBoTools 在 Slackware 14.2 中安装 Docker,但我收到了 runc 安装的错误消息。
未定义对“seccomp_rule_add_exact_array”collect2 的引用:错误:ld 返回 1 个退出状态
make: *** [全部] 错误 2
Makefile:30:目标“全部”的配方失败
失败:runc:runc.SlackBuild 返回非零
我试图从源代码构建 runc,但得到了同样的错误。我不是 go-lang 的专家,不知道问题是否与它有关。
谢谢,
更多细节:
在安装时发出该命令时会出现问题:
编辑 #2 - 问题已解决。
好的,问题出在 slackbuilds 的 runc 包的 Makefile 中。有两行将使用命令“go build”,并且在这两行中都有一个名为“-ldflags”的标志...要解决问题,只需使用“-gccgoflags”更新此标志即可。Obs:如果你尝试安装 Docker,你也会遇到 containerd 的这个问题。
希望这可以帮助某人,我会为 Slackbuilds 中的软件包维护者报告这个:)
docker - Windows docker 上 Linux docker Runc 的等效部分是什么?
原谅我刚开始学懂Docker
。据我所知,Docker
以前是靠的LXC
。然后去libcontainer
。现在它是Runc
(来自docker 1.11)。这是OCF
(Open Container Format)的实现。而且我知道Runc
只能在Linux上运行。Runc
Linux docker 的底层也是如此。我的问题是Runc
Windows docker 上的 Linux docker 的等价物是什么?谢谢。
ubuntu - 在容器中绑定挂载 /proc 或 /dev 导致操作不允许错误
我正在尝试将挂载 /proc 或 /dev 从主机绑定到 ubuntu 16.04 上的 linux 容器,但出现不允许操作错误。
我使用runc作为我的容器运行时,这里是 runc config.json 中的挂载部分。
我同时打开了 pid 命名空间、用户命名空间和挂载命名空间。
这是 strace 输出:
22435 安装(“/proc”,“/sompath/test-proc”,0xc42001be56,MS_RDONLY|MS_BIND|MS_REC,NULL)= 0
22435 mount("/proc", "/somepath/test-proc", 0xc42001be66, MS_RDONLY|MS_REMOUNT|MS_BIND|MS_REC, NULL) = -1 EPERM (不允许操作)
此问题仅发生在 Ubuntu 上,而不会发生在其他 linux 发行版上,例如 Alinux 或 Raspbian。
有谁知道可能导致这种情况的原因是什么?
docker - docker如何为容器中的进程分配内存?
Docker首先初始化一个容器,然后执行你想要的程序。我想知道docker是如何管理容器的内存地址和里面的程序的。
segmentation-fault - 在 runc 容器中执行二进制文件时出现分段错误
我对runc容器有一个特殊的问题。我有一个执行以下命令的 bash 脚本(以 root 身份运行):
每次,当它在容器启动时运行时,它都会失败并显示以下输出:
然而:
- 当我 ssh 或 shell 进入容器并手动运行命令时,它将起作用。
- 如果我删除
chpst -u vcap:vcap
(以root身份运行)它也可以工作。 - 如果我删除
setcap cap_net_bind_servic...
声明,它也会起作用。 - 当我将 chown 更改
my-binary
为 时vcap:vcap
,它会起作用。
但这些都不是真正实施的有效选择。我什至将二进制文件的源代码编辑为简单地休眠 2 小时 - 这没有任何效果,所以我不认为二进制文件的实际源代码是原因。有什么我想念的吗?
我的 runc 版本是:
docker - 运行时树莓派 pi3 B/B+ 和 OCI 容器上的垃圾输出
我在树莓派 pi3 上使用 docker-runC(https://github.com/opencontainers/runtime-spec)运行简单的 docker busybox 容器(转换为 OCI 包),通过 UART 终端连接到主机。使用 UART 到 USB 转换器(C232HD USB 到 UART)通过 GPIO 上的引脚 6-8-10 完成连接。终端设置:115200 bps,8 个数据/1 个停止位,无奇偶校验和流量控制。只有当容器内部进程(在这种情况下是 Bourne shell 提示符,但其他任何东西都会输出相同的垃圾)输出到屏幕时,我才会得到垃圾。在 imx7s WaRP7 设备上运行相同的容器(相同的架构)或使用 HDMI 电缆将树莓派 pi3 连接到屏幕时,不会出现此问题。
附件是我看到的垃圾的打印屏幕。config.json 文件是默认的(docker-runc 规范),没有更改。我正在使用 process/env/TERM=xterm 和 process/terminal=true 运行。有谁知道为什么我只能在树莓派 pi3 和使用 UART 时(不在其他设备上,也不是在使用 HDMI 时)得到这个垃圾,并且可以给我一些关于如何处理这个问题的方向?