kata containers + firecrackerを試してみた
コンテナのセキュリティレベルを上げるためにホストOSとの分離レベルをあげようというモチベーションで開発されたプロダクトがいくつかあります。gVisorやrunV、kata containersなどがそれです。今回はその中のkata containersを検証してみました。kata containersはfirecrackerというAWSがFargateやLambdaの実行環境として利用しているVMMを利用することもできるので、合わせて使ってみたいと思います。
前提
- Ubuntu 18.04 LTS のCloud image
検証手順
まず、docker ceをインストールします。kata containersのマニュアルに従い、バージョンは最新ではなく、18.06を用います。
sudo apt-get update sudo apt-get -y install apt-transport-https \ ca-certificates \ curl \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get install docker-ce=18.06.3~ce~3-0~ubuntu
次にkata containersとfirecrackerのバイナリをDLし、展開します。
wget https://github.com/kata-containers/runtime/releases/download/1.5.0/kata-static-1.5.0-x86_64.tar.xz sudo tar -xvf kata-static-1.5.0-x86_64.tar.xz -C /
Dockerのデフォルトruntimeの設定をkata containers + firecrackerとします。
sudo su - cat <<EOF > /etc/docker/daemon.json { "default-runtime": "kata-fc", "runtimes": { "kata-fc": { "path": "/opt/kata/bin/kata-fc" } }, "mtu": 1450, "storage-driver": "devicemapper" } EOF exit sudo systemctl daemon-reload sudo systemctl restart docker
最後に必須カーネルモジュールの読み込み設定をしてインストールは完了です。
sudo su - cat <<EOF > /etc/modules-load.d/vhost_vsock.conf vhost_vsock EOF exit sudo modprobe vhost_vsock
ではnginxを起動して、ホストからnginxプロセスが見えるか確かめてみましょう。
sudo docker run -d nginx sudo ps -ef | grep nginx
grepコマンドの結果のみになっているはずです。ちなみに、containerdで同じことをやると以下のようになりました。
root 8216 8194 0 22:02 ? 00:00:00 nginx: master process nginx -g daemon off; systemd+ 8275 8216 0 22:02 ? 00:00:00 nginx: worker process tatsuno+ 8278 5237 0 22:02 pts/0 00:00:00 grep --color=auto nginx