替代容器執行環境
Docker 引擎使用 containerd 來管理容器生命週期,包括建立、啟動和停止容器。預設情況下,containerd 使用 runc 作為其容器執行階段。
我可以使用哪些執行階段?
您可以使用任何實作 containerd shim API。
實作自身 containerd shim 的執行階段範例包括
您也可以使用設計為 runc 直接替代品的執行階段。此類執行階段依賴 runc containerd shim 來叫用執行階段二進位檔。您必須在守護行程設定中手動註冊此類執行階段。
youki 是一個可以作為 runc 直接替代方案的執行環境範例。參考說明設定的 youki 範例。
使用 containerd shim
containerd shim 讓您無需更改 Docker daemon 的設定即可使用替代執行環境。若要使用 containerd shim,請在執行 Docker daemon 的系統上將 shim 二進制檔案安裝到 PATH
中。
若要搭配 docker run
使用 shim,請將執行環境的完整名稱指定為 --runtime
旗標的值。
$ docker run --runtime io.containerd.kata.v2 hello-world
使用未安裝在 PATH 上的 containerd shim
您可以在未將 shim 安裝到 PATH
的情況下使用它,此時您需要在 daemon 設定中註冊 shim,如下所示:
{
"runtimes": {
"foo": {
"runtimeType": "/path/to/containerd-shim-foobar-v1"
}
}
}
若要使用 shim,請指定您分配給它的名稱。
$ docker run --runtime foo hello-world
設定 shim
如果您需要為 containerd shim 傳遞額外的設定,可以使用 daemon 設定檔中的 runtimes
選項。
透過為您要設定的 shim 新增
runtimes
項目來編輯 daemon 設定檔。- 在
runtimeType
鍵中指定執行環境的完整名稱。 - 在
options
鍵下新增您的執行環境設定。
{ "runtimes": { "gvisor": { "runtimeType": "io.containerd.runsc.v1", "options": { "TypeUrl": "io.containerd.runsc.v1.options", "ConfigPath": "/etc/containerd/runsc.toml" } } } }
- 在
重新載入 daemon 的設定。
# systemctl reload docker
使用
docker run
的--runtime
旗標來使用自訂的執行環境。$ docker run --runtime gvisor hello-world
有關 containerd shim 的設定選項的更多資訊,請參閱 設定 containerd shims。
範例
以下範例示範如何使用 Docker Engine 設定和使用替代容器執行環境。
youki
youki 是一個以 Rust 編寫的容器執行環境。youki 聲稱比 runc 更快且使用更少的記憶體,使其成為資源受限環境的良好選擇。
youki 可作為 runc 的直接替代方案,這表示它依賴 runc shim 來呼叫執行環境二進制檔案。當您註冊作為 runc 替代方案的執行環境時,您需要設定執行環境可執行檔的路徑,以及選擇性的一組執行環境引數。更多資訊,請參閱 設定 runc 直接替代方案。
若要新增 youki 作為容器執行環境:
安裝 youki 及其相依性。
有關說明,請參閱 官方設定指南