2.7 KiB
Changing Platforms
[TOC]
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:
- Google Cloud: Enabling Nested Virtualization for VM Instances
- Microsoft Azure: How to enable nested virtualization in an Azure VM
- VirtualBox: Nested Virtualization
- KVM: Nested Guests
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"
]
}
}
}