如何在runc和oci之間切換docker執行時
我從 Fedora 的預設倉庫安裝了 docker 引擎。
將 fedora 更新到 26 後,我在使用容器時遇到了一些非常奇怪的問題。
我發現這個
docker info
:執行時:runc
預設執行時:oci
另一台帶有 docker from 的電腦
yum.dockerproject.org
,docker info
只有 runc:執行時:runc
預設執行時:runc
我搜尋了很多地方,但找不到任何有關切換此執行時的文件。
這就是我在 Ubuntu 上將預設執行時從runc更改為crun的方式。
只需編輯
~/.config/docker/daemon.json
並添加crun
到執行時列表,然後設置crun
為預設執行時。{ "default-runtime": "crun", "runtimes": { "crun": { "path": "/usr/bin/crun" } } }
現在重新啟動 docker 服務 (
systemctl restart --user docker
)注意:如果您沒有在無根模式下執行 docker,則需要改為編輯
/etc/docker/daemon.json
.來源
在dockerd中,有以下選項:
--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語法。
當被問到這個問題時,我不太確定 oci 與 runc back 的 docker 是什麼意思,當他們分叉 runc 程式碼時,它可能是在 docker 引擎中的內置執行時之間進行區分。這早就完成了,您只會在目前的 docker 安裝中看到 runc 和 containerd.runc 執行時。措辭令人困惑的原因是runc 是一個 OCI 項目。