Skip to content
This repository was archived by the owner on Aug 7, 2025. It is now read-only.

Commit cb61549

Browse files
ctalledorodnymolina
authored andcommitted
Updated docs for Ubuntu Eoan support; improved distro compatiblity text.
1 parent 8841e93 commit cb61549

File tree

5 files changed

+191
-98
lines changed

5 files changed

+191
-98
lines changed

README.md

Lines changed: 24 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
## Contents
44

55
- [Introduction](#introduction)
6+
- [Support](#support)
67
- [Download](#download)
7-
- [Supported Linux Distros](#supported-linux-distros)
8+
- [Supported Distros](#supported-distros)
89
- [Host Requirements](#host-requirements)
910
- [Installation](#installation)
1011
- [Usage](#usage)
@@ -15,7 +16,6 @@
1516
- [Security and Isolation](#security-and-isolation)
1617
- [Documentation](#documentation)
1718
- [Integration with Container Managers](#integration-with-container-managers)
18-
- [Production Readiness](#production-readiness)
1919
- [Troubleshooting](#troubleshooting)
2020
- [Issues](#issues)
2121
- [Roadmap](#roadmap)
@@ -58,47 +58,21 @@ The latest release of Sysbox is [here](https://github.com/nestybox/sysbox-extern
5858

5959
Installation instructions are below.
6060

61-
## Supported Linux Distros
61+
## Supported Distros
6262

63-
Sysbox relies on functionality that is only present in very recent
64-
Ubuntu kernels:
63+
Sysbox relies on functionality that is currently only present in
64+
Ubuntu.
6565

66-
- Ubuntu 19.04 "Disco" (kernel >= 5.0.0-21.22)
67-
- Ubuntu 18.04 "Bionic" (with 5.0+ kernel upgrade)
68-
69-
If you need to upgrade your kernel in order to match requirements
70-
stated above, see [here](docs/troubleshoot.md#upgrading-the-ubuntu-kernel)
71-
for suggestions on how to do this.
72-
73-
Alternatively it's possible to use Sysbox with slightly older Ubuntu
74-
kernels, but doing so requires using system containers in [Docker userns-remap isolation mode](docs/usage.md#system-container-isolation-modes).
75-
In this case you can run Sysbox on the following distros (without
76-
needing to upgrade the kernel):
77-
78-
- Ubuntu 19.04 "Disco"
79-
- Ubuntu 18.10 "Cosmic"
80-
- Ubuntu 18.04 "Bionic"
66+
See the [distro compatibility doc](docs/distro-compat.md) for
67+
information on what versions of Ubuntu kernels are supported.
8168

8269
We plan to add support for more distros in the future.
8370

84-
Here is a summary of the distro requirements:
85-
86-
| System Container Isolation Mode | Required Distro & Kernel |
87-
| ---------------------------------| ----------------------------------- |
88-
| Exclusive userns-remap (default) | Ubuntu 19.04 Disco (>= 5.0.0-21.22) |
89-
| | Ubuntu 18.04 Bionic (5.0+ kernel) |
90-
| Docker userns-remap | Ubuntu 19.04 Disco |
91-
| | Ubuntu 18.10 Cosmic |
92-
| | Ubuntu 18.04 Bionic |
93-
94-
See [here](docs/usage.md#system-container-isolation-modes) for info on
95-
Sysbox isolation modes and how to configure them.
96-
9771
## Host Requirements
9872

9973
The Linux host on which Sysbox runs must meet the following requirements:
10074

101-
1) It must have one of the Linux distros listed in the prior section.
75+
1) It must have one of the supported Linux distros.
10276

10377
2) Systemd must be the system's process-manager (the default in the supported distros).
10478

@@ -158,13 +132,19 @@ $ docker run --runtime=sysbox-runc --rm -it --hostname my_cont debian:latest
158132
root@my_cont:/#
159133
```
160134

161-
If you omit the `--runtime` option, Docker will use its default `runc`
162-
runtime to launch regular application containers (rather than system
163-
containers).
135+
If you see an error such as:
164136

165-
It's perfectly fine to run system containers launched with Docker +
166-
Sysbox along side regular Docker application containers; they won't
167-
conflict.
137+
docker: Error response from daemon: OCI runtime create failed: container requires user-ID shifting but error was found: shiftfs module is not loaded in the kernel. Update your kernel to include shiftfs module or enable Docker with userns-remap. Refer to the Sysbox troubleshooting guide for more info: unknown
138+
139+
it means that your kernel version is a bit older than needed by Sysbox.
140+
Refer to the [distro compatibility doc](docs/distro-compat.md) for
141+
more info on how to overcome this problem.
142+
143+
Note that if you omit the `--runtime` option, Docker will use its
144+
default `runc` runtime to launch regular application containers
145+
(rather than system containers). It's perfectly fine to run system
146+
containers launched with Docker + Sysbox alongside regular Docker
147+
application containers; they won't conflict.
168148

169149
The [Sysbox Quickstart Guide](docs/quickstart.md) and the [Nestybox Blog Site](https://blog.nestybox.com) have
170150
more usage examples.
@@ -260,6 +240,10 @@ system containers.
260240
- Provides many examples for using system containers. New users
261241
should start here.
262242

243+
- [Sysbox Distro Compatilibity Doc](docs/distro-compat.md)
244+
245+
- Distro compatibility requirements.
246+
263247
- [Sysbox User's Guide](docs/usage.md)
264248

265249
- Provides more detail information on Sysbox features.
@@ -396,5 +380,4 @@ Your trust in us is very much appreciated.
396380

397381
\-- _The Nestybox Team_
398382

399-
400383
[slack]: https://join.slack.com/t/nestybox-support/shared_invite/enQtOTA0NDQwMTkzMjg2LTAxNGJjYTU2ZmJkYTZjNDMwNmM4Y2YxNzZiZGJlZDM4OTc1NGUzZDFiNTM4NzM1ZTA2NDE3NzQ1ODg1YzhmNDQ

docs/design.md

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ kernel is required.
183183
When Sysbox is configured in exclusive userns-remap mode (it's
184184
default isolation mode), it makes use of the Ubuntu shiftfs module,
185185
which is included in recent Ubuntu kernels (see the list of
186-
[supported Linux distros](../README.md#supported-linux-distros) for more info on this).
186+
[supported Linux distros](distro-compat.md) for more info on this).
187187

188188
The purpose of this module is to perform filesystem user-ID and
189189
group-ID "shifting" between the a container's Linux user namespace and
@@ -339,18 +339,6 @@ The main goals for this are:
339339

340340
2) Increase isolation between the container and the host.
341341

342-
Currently, Sysbox does virtualization of the following procfs resources:
343-
344-
- `/proc/uptime`
345-
346-
- Shows the uptime of the system container, not the host.
347-
348-
- `/proc/sys/net/netfilter/nf_conntrack_max`
349-
350-
- Sysbox emulates this resource independently per system
351-
container, and sets appropriate values in the host kernel's
352-
`nf_conntrack_max`.
353-
354342
Note also that by virtue of enabling the Linux user namespace in all
355343
system containers, kernel resources under `/proc/sys` that are not
356344
namespaced by Linux (e.g., `/proc/sys/kernel/*`) can't be changed from

docs/distro-compat.md

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
# Sysbox Distro Compatibility
2+
3+
## Contents
4+
5+
- [Supported Linux Distros](#supported-linux-distros)
6+
- [Ubuntu Support](#ubuntu-support)
7+
- [Sysbox on Older Ubuntu Kernels](#sysbox-on-older-ubuntu-kernels)
8+
- [Distro Compatibility Summary](#distro-compatibility-summary)
9+
- [Upgrading the Ubuntu Kernel](#upgrading-the-ubuntu-kernel)
10+
- [Bionic Beaver](#bionic-beaver)
11+
- [Disco Dingo](#disco-dingo)
12+
13+
## Supported Linux Distros
14+
15+
Sysbox relies on functionality that is currently only present in
16+
Ubuntu kernels. Thus, Ubuntu is the only distro supported at this
17+
time.
18+
19+
## Ubuntu Support
20+
21+
Sysbox requires very recent Ubuntu kernels:
22+
23+
- Ubuntu 19.10 "Eoan"
24+
- Ubuntu 19.04 "Disco" (kernel upgrade >= 5.0.0-21.22)
25+
- Ubuntu 18.04 "Bionic" (kernel upgrade >= 5.0)
26+
27+
If your kernel is not one of these, you can still use Sysbox
28+
using the alternative approach described in the next section.
29+
30+
**NOTES:**
31+
32+
1) Canonical generates flavors of these kernels for desktop, server,
33+
and cloud. The [cloud images](https://cloud-images.ubuntu.com/) do
34+
not yet include the kernel functionality required by Sysbox
35+
(unfortunately). Thus, if you want to use Sysbox on a cloud VM, you
36+
must install the Ubuntu desktop or server flavors on the VM, or use
37+
the alternative approach described in the next section.
38+
39+
2) If you have a Ubuntu desktop or server image but need to upgrade
40+
the kernel in order to meet the requirements listed above, see
41+
[here](#upgrading-the-ubuntu-kernel) for suggestions on how to do this.
42+
43+
3) If you launch a system container with Docker + Sysbox, and you get
44+
an error such as
45+
46+
```console
47+
# docker run --runtime=sysbox-runc -it debian:latest
48+
docker: Error response from daemon: OCI runtime create failed: container requires user-ID shifting but error was found: shiftfs module is not loaded in the kernel. Update your kernel to include shiftfs module or enable Docker with userns-remap. Refer to the Sysbox troubleshooting guide for more info: unknown
49+
```
50+
51+
it means that your kernel does not meet the requirements listed above
52+
(specifically your distro does not have the `shiftfs` module that is
53+
present in recent Ubuntu desktop and server kernels). In this case you
54+
must either upgrade your kernel or use the alternative approach
55+
described in the next section.
56+
57+
### Sysbox on Older Ubuntu Kernels
58+
59+
If your distro is Ubuntu but the kernel version is not as recent as
60+
those listed in the prior section, it's still possible to use
61+
Sysbox. However, doing so requires two things:
62+
63+
1) You must have Ubuntu Bionic or later (e.g., Ubuntu Bionic, Disco,
64+
Cosmic, or Eoan). Any kernel version of these releases will do.
65+
66+
2) You must change the configuration of the Docker daemon:
67+
68+
- After installing Sysbox, add the `userns-remap` line to the
69+
`/etc/docker/daemon.json` file as shown below:
70+
71+
```console
72+
# cat /etc/docker/daemon.json
73+
{
74+
"userns-remap": "sysbox",
75+
"runtimes": {
76+
"sysbox-runc": {
77+
"path": "/usr/local/sbin/sysbox-runc"
78+
}
79+
}
80+
}
81+
```
82+
83+
This tells Docker to enable the user namespace in all containers
84+
and map the root user in the container to the subid range of
85+
user `sysbox`, as defined in the `/etc/subuid` and `/etc/subgid` files.
86+
87+
- Restart the Docker daemon:
88+
89+
```console
90+
# sudo systemctl restart docker.service
91+
```
92+
93+
- Note that both of the actions above require `root` privileges on
94+
the host.
95+
96+
When Docker is configured this way, Sysbox works in what we call
97+
"Docker userns-remap mode". It's a mode that offers strong container
98+
isolation, but not as strong as when using the latest Ubuntu kernels
99+
with the shiftfs module as described in the prior section (where
100+
Sysbox works in "Exclusive userns-remap mode". See
101+
[here](usage.md#system-container-isolation-modes) for more info on
102+
Sysbox isolation modes.
103+
104+
### Distro Compatibility Summary
105+
106+
Here is a summary of the distro requirements:
107+
108+
| Distro Name | Kernel | Requires Docker in Userns-Remap Mode |
109+
| ------------------- | ---------------- | ------------------------------------ |
110+
| Ubuntu 19.10 Eoan | Any | No |
111+
| Ubuntu 19.04 Disco | >= 5.0.0-21.22 | No |
112+
| | < 5.0.0-21.22 | Yes |
113+
| Ubuntu 18.10 Cosmic | Any | Yes |
114+
| Ubuntu 18.04 Bionic | >= 5.0 | No |
115+
| | < 5.0 | Yes |
116+
117+
### Upgrading the Ubuntu Kernel
118+
119+
In case you need to upgrade your machine's Linux kernel to meet Sysbox
120+
kernel version requirements, here are some suggestions. Refer to the
121+
Ubuntu documentation online for further info.
122+
123+
#### Bionic Beaver
124+
125+
For Bionic Beaver, we recommend using Ubuntu's [LTS-enablement](https://wiki.ubuntu.com/Kernel/LTSEnablementStack)
126+
package:
127+
128+
```console
129+
$ sudo apt-get update && sudo apt install --install-recommends linux-generic-hwe-18.04 -y
130+
```
131+
132+
#### Disco Dingo
133+
134+
For Disco Dingo, we recommend simply upgrading the distro:
135+
136+
```console
137+
$ sudo apt-get update
138+
$ sudo apt-get upgrade
139+
$ sudo apt-get dist-upgrade
140+
$ reboot
141+
```

docs/troubleshoot.md

Lines changed: 8 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22

33
## Contents
44

5-
- [Upgrading the Ubuntu Kernel](#upgrading-the-ubuntu-kernel)
6-
- [Bionic Beaver](#bionic-beaver)
7-
- [Disco Dingo](#disco-dingo)
85
- [Sysbox Installation Problems](#sysbox-installation-problems)
96
- [Ubuntu Shiftfs Module Not Present](#ubuntu-shiftfs-module-not-present)
107
- [Unprivileged User Namespace Creation Error](#unprivileged-user-namespace-creation-error)
@@ -17,31 +14,6 @@
1714
- [sysbox-mgr and sysbox-fs](#sysbox-mgr-and-sysbox-fs)
1815
- [sysbox-runc](#sysbox-runc)
1916

20-
## Upgrading the Ubuntu Kernel
21-
22-
In case you need to upgrade your machine's Linux kernel to meet Sysbox [distro requirements](../README.md#supported-linux-distros),
23-
here are some suggestions. Refer to the Ubuntu documentation online for further info.
24-
25-
### Bionic Beaver
26-
27-
For Bionic Beaver, we recommend using Ubuntu's [LTS-enablement](https://wiki.ubuntu.com/Kernel/LTSEnablementStack)
28-
package:
29-
30-
```console
31-
$ sudo apt-get update && sudo apt install --install-recommends linux-generic-hwe-18.04 -y
32-
```
33-
34-
### Disco Dingo
35-
36-
For Disco Dingo, we recommend simply upgrading the distro:
37-
38-
```console
39-
$ sudo apt-get update
40-
$ sudo apt-get upgrade
41-
$ sudo apt-get dist-upgrade
42-
$ reboot
43-
```
44-
4517
## Sysbox Installation Problems
4618

4719
When installing the Sysbox package with the `dpkg` command
@@ -120,23 +92,20 @@ docker: Error response from daemon: OCI runtime create failed: container require
12092
```
12193

12294
The error likely means you are running Sysbox on an older Ubuntu
123-
kernel, as newer Ubuntu kernels come with shiftfs.
124-
125-
The Ubuntu shiftfs module is required when Sysbox is configured in
126-
[exclusive userns-remap mode](usage.md#exclusive-userns-remap-mode)
127-
(it's default operating mode).
95+
kernel, as newer Ubuntu kernels come with shiftfs. Or maybe you
96+
are using a Ubuntu image meant for cloud VM instances, rather
97+
than Ubuntu Desktop or Server.
12898

12999
You can work-around this error by either:
130100

131-
- Updating your Linux distro. See [here](../README.md#supported-linux-distros)
132-
for the list of Linux distros supported by Sysbox, and
133-
[here](#upgrading-the-ubuntu-kernel) for recommendations on how to
134-
update the distro.
101+
- Updating your Linux distro. See the [distro compatibility](distro-compat.md)
102+
document for the list of Linux distros supported by Sysbox, and
103+
recommendations on how to update the distro.
135104

136105
or
137106

138-
- Configuring Sysbox in docker userns-remap mode, as described
139-
[here](usage.md#system-container-isolation-modes). This
107+
- Configuring Docker in userns-remap mode, as described
108+
[here](distro-compat.md#sysbox-on-older-ubuntu-kernels). This
140109
mode does not require use of shiftfs.
141110

142111
## Unprivileged User Namespace Creation Error

0 commit comments

Comments
 (0)