⭐️

gVisorをdockerで実際に使ってみた

2024/02/03に公開

gVisorとは?

みなさん、gVisorってご存知でしょうか?gVisorはgoogleが開発したコンテナランタイムで、みなさんがデフォルトで利用しているruncよりセキュリティ性が高いです。そこで今回dockerで使ってみたので、軽く紹介していこうと思います。

gVisorのインストール

僕の環境ではUbuntuなので、Ubuntuの方は以下の通りにインストールしてください。

curl -fsSL https://gvisor.dev/archive.key | sudo gpg --dearmor -o /usr/share/keyrings/gvisor-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/gvisor-archive-keyring.gpg] https://storage.googleapis.com/gvisor/releases release main" | sudo tee /etc/apt/sources.list.d/gvisor.list > /dev/null
sudo apt-get update && sudo apt-get install -y runsc

runscとは?

低レベルランタイムです。主にruncの部分にあたる場所です。

いよいよインストール

以下の通りにインストールしてください。

sudo runsc install

そうすると、以下の通りに/etc/docker/daemon.jsonが変更されます。

daemon.json
{
    "runtimes": {
        "runsc": {
            "path": "/usr/bin/runsc"
        }
    }
}

そのあと以下の通りにdockerを再起動します。

$ sudo systemctl restart docker

実行してみよう

以下の通りにruntime引数にrunscを渡してください。

$ docker run --runtime=runsc nginx

gVisorをデフォルトランタイムにしよう

ランタイムを指定することを省くために、デフォルトランタイムにしましょう。

/etc/docker/daemon.jsonを以下の通りに変更してください。

daemon.json
{
    "runtimes": {
        "runsc": {
            "path": "/usr/bin/runsc"
        }
    },
    "default-runtime": "runsc"
}

これでgVisorをデフォルトにすることができました!

最後に

僕はDiscord botを動かす時docker-composeを使うのですが、前からgVisorが気になっていたので、試しにgVisorを入れて強化しようと思いインストールしてみました。これを機に皆様もdockerにgVisorを入れてセキュリティを強化しましょう。

GitHubで編集を提案

Discussion