我从 Fedora 的默认仓库安装了 docker 引擎。
将 Fedora 更新到 26 后,我在使用容器时遇到了一些非常奇怪的问题。
我在以下位置发现了这一点docker info
:
运行时:oci runc
默认运行时:oci
另一台安装了docker的电脑yum.dockerproject.org
,docker info
只有runc:
运行时:runc
默认运行时:runc
我搜索了很多地方,但找不到任何关于切换此运行时的文档。
答案1
这就是我如何将默认运行时从运行到克伦在 Ubuntu 上。
只需编辑~/.config/docker/daemon.json
,并添加crun
到运行时列表,然后设置crun
为默认运行时。
{
"default-runtime": "crun",
"runtimes": {
"crun": {
"path": "/usr/bin/crun"
}
}
}
现在重新启动docker服务(systemctl restart --user docker
)
注意:如果你没有在无根模式,您将需要编辑/etc/docker/daemon.json
。
来源
答案2
在docker 复制代码,有以下选项:
--default-runtime string Default OCI runtime for containers (default "runc")
这更容易配置/etc/docker/daemon.json 文件
{
"default-runtime": "runc"
}
然后从 systemd,您可以通过重新加载来应用更改(无需重新启动引擎并停止运行容器):
systemctl reload docker
请注意,守护进程中的更改可能不会影响已创建的容器,因此您可能需要创建新的容器才能看到此更改的效果。
要在单个容器上更改运行时,您可以从 进行操作docker run
。有以下选项(在 中可见docker run --help
):
--runtime string Runtime to use for this container
Compose 文件有类似的运行时:runc句法。
当有人问这个问题时,我不太清楚 docker 所说的 oci vs runc 是什么意思,它可能是在他们分叉 runc 代码时区分 docker 引擎中的内置运行时。这早已结束,您只会在当前的 docker 安装中看到 runc 和 containerd.runc 运行时。措辞令人困惑的原因是runc 是一个 OCI 项目。