Changing Platforms

Edit this page Create issue

This guide described how to change the platform used by runsc.

Prerequisites

If you intend to run the KVM platform, you will also to have KVM installed on your system. If you are running a Debian based system like Debian or Ubuntu you can usually do this by ensuring the module is loaded, and permissions are appropriately set on the /dev/kvm device.

If you have an Intel CPU:

sudo modprobe kvm-intel && sudo chmod a+rw /dev/kvm

If you have an AMD CPU:

sudo modprobe kvm-amd && sudo chmod a+rw /dev/kvm

If you are using a virtual machine you will need to make sure that nested virtualization is configured. Here are links to documents on how to set up nested virtualization in several popular environments:

Note: nested virtualization will have poor performance and is historically a cause of security issues (e.g. CVE-2018-12904). It is not recommended for production.

Configuring Docker

The platform is selected by the --platform command line flag passed to runsc. By default, the ptrace platform is selected. For example, to select the KVM platform, modify your Docker configuration (/etc/docker/daemon.json) to pass the --platform argument:

{
    "runtimes": {
        "runsc": {
            "path": "/usr/local/bin/runsc",
            "runtimeArgs": [
                "--platform=kvm"
            ]
       }
    }
}

You must restart the Docker daemon after making changes to this file, typically this is done via systemd:

sudo systemctl restart docker

Note that you may configure multiple runtimes using different platforms. For example, the following configuration has one configuration for ptrace and one for the KVM platform:

{
    "runtimes": {
        "runsc-ptrace": {
            "path": "/usr/local/bin/runsc",
            "runtimeArgs": [
                "--platform=ptrace"
            ]
        },
        "runsc-kvm": {
            "path": "/usr/local/bin/runsc",
            "runtimeArgs": [
                "--platform=kvm"
            ]
        }
    }
}