@@ -77,11 +77,85 @@ For Solaris, the mount entry corresponds to the 'fs' resource in the [zonecfg(1M
7777 * Windows: a local directory on the filesystem of the container host. UNC paths and mapped drives are not supported.
7878 * Solaris: corresponds to "special" of the fs resource in [ zonecfg(1M)] [ zonecfg.1m ] .
7979* ** ` options ` ** (array of strings, OPTIONAL) Mount options of the filesystem to be used.
80- * Linux: supported options are listed in the [ mount(8)] [ mount.8 ] man page.
81- Note both [ filesystem-independent] [ mount.8-filesystem-independent ] and [ filesystem-specific] [ mount.8-filesystem-specific ] options are listed.
80+ * Linux: See [ Linux mount options] ( #configLinuxMountOptions ) below. The "MUST" options correspond to [ ` mount(8) ` ] [ mount.8 ] .
8281 * Solaris: corresponds to "options" of the fs resource in [ zonecfg(1M)] [ zonecfg.1m ] .
8382 * Windows: runtimes MUST support ` ro ` , mounting the filesystem read-only when ` ro ` is given.
8483
84+ ### <a name =" configLinuxMountOptions " />Linux mount options
85+
86+ Runtimes MUST/SHOULD/MAY implement the following option strings for Linux:
87+
88+ Option name | Requirement | Description
89+ ------------------|-------------|-----------------------------------------------------
90+ ` async ` | MUST | [ ^ 2 ]
91+ ` atime ` | MUST | [ ^ 2 ]
92+ ` bind ` | MUST | [ ^ 1 ] (bind mounts)
93+ ` defaults ` | MUST | [ ^ 2 ]
94+ ` dev ` | MUST | [ ^ 2 ]
95+ ` diratime ` | MUST | [ ^ 2 ]
96+ ` dirsync ` | MUST | [ ^ 2 ]
97+ ` exec ` | MUST | [ ^ 2 ]
98+ ` iversion ` | MUST | [ ^ 2 ]
99+ ` lazytime ` | MUST | [ ^ 2 ]
100+ ` loud ` | MUST | [ ^ 2 ]
101+ ` mand ` | MAY | [ ^ 2 ] (Deprecated in kernel 5.15, util-linux 2.38)
102+ ` noatime ` | MUST | [ ^ 2 ]
103+ ` nodev ` | MUST | [ ^ 2 ]
104+ ` nodiratime ` | MUST | [ ^ 2 ]
105+ ` noexec ` | MUST | [ ^ 2 ]
106+ ` noiversion ` | MUST | [ ^ 2 ]
107+ ` nolazytime ` | MUST | [ ^ 2 ]
108+ ` nomand ` | MAY | [ ^ 2 ]
109+ ` norelatime ` | MUST | [ ^ 2 ]
110+ ` nostrictatime ` | MUST | [ ^ 2 ]
111+ ` nosuid ` | MUST | [ ^ 2 ]
112+ ` nosymfollow ` | SHOULD | [ ^ 2 ] (Introduced in kernel 5.10, util-linux 2.38)
113+ ` private ` | MUST | [ ^ 1 ] (bind mounts)
114+ ` ratime ` | SHOULD | Recursive ` atime ` [ ^ 3 ]
115+ ` rbind ` | MUST | [ ^ 1 ] (bind mounts)
116+ ` rdev ` | SHOULD | Recursive ` dev ` [ ^ 3 ]
117+ ` rdiratime ` | SHOULD | Recursive ` diratime ` [ ^ 3 ]
118+ ` relatime ` | MUST | [ ^ 2 ]
119+ ` remount ` | MUST | [ ^ 2 ]
120+ ` rexec ` | SHOULD | Recursive ` dev ` [ ^ 3 ]
121+ ` rnoatime ` | SHOULD | Recursive ` noatime ` [ ^ 3 ]
122+ ` rnodiratime ` | SHOULD | Recursive ` nodiratime ` [ ^ 3 ]
123+ ` rnoexec ` | SHOULD | Recursive ` noexec ` [ ^ 3 ]
124+ ` rnorelatime ` | SHOULD | Recursive ` norelatime ` [ ^ 3 ]
125+ ` rnostrictatime ` | SHOULD | Recursive ` nostrictatime ` [ ^ 3 ]
126+ ` rnosuid ` | SHOULD | Recursive ` nosuid ` [ ^ 3 ]
127+ ` rnosymfollow ` | SHOULD | Recursive ` nosymfollow ` [ ^ 3 ]
128+ ` ro ` | MUST | [ ^ 2 ]
129+ ` rprivate ` | MUST | [ ^ 1 ] (bind mounts)
130+ ` rrelatime ` | SHOULD | Recursive ` relatime ` [ ^ 3 ]
131+ ` rro ` | SHOULD | Recursive ` ro ` [ ^ 3 ]
132+ ` rrw ` | SHOULD | Recursive ` rw ` [ ^ 3 ]
133+ ` rshared ` | MUST | [ ^ 1 ] (bind mounts)
134+ ` rslave ` | MUST | [ ^ 1 ] (bind mounts)
135+ ` rstrictatime ` | SHOULD | Recursive ` strictatime ` [ ^ 3 ]
136+ ` rsuid ` | SHOULD | Recursive ` suid ` [ ^ 3 ]
137+ ` rsymfollow ` | SHOULD | Recursive ` symfollow ` [ ^ 3 ]
138+ ` runbindable ` | MUST | [ ^ 1 ] (bind mounts)
139+ ` rw ` | MUST | [ ^ 2 ]
140+ ` shared ` | MUST | [ ^ 2 ]
141+ ` silent ` | MUST | [ ^ 2 ]
142+ ` slave ` | MUST | [ ^ 1 ] (bind mounts)
143+ ` strictatime ` | MUST | [ ^ 2 ]
144+ ` suid ` | MUST | [ ^ 2 ]
145+ ` symfollow ` | SHOULD | Opposite of ` nosymfollow `
146+ ` sync ` | MUST | [ ^ 2 ]
147+ ` tmpcopyup ` | MAY | copy up the contents to a tmpfs
148+ ` unbindable ` | MUST | [ ^ 1 ] (bind mounts)
149+
150+ [ ^ 1 ] : Corresponds to [ ` mount(8) ` (filesystem-specific)] [ mount.8-filesystem-specific ] .
151+ [ ^ 2 ] : Corresponds to [ ` mount(8) ` (filesystem-independent)] [ mount.8-filesystem-independent ] .
152+ [ ^ 3 ] : These ` AT_RECURSIVE ` options need kernel 5.12 or later. See [ ` mount_setattr(2) ` ] [ mount_setattr.2 ]
153+
154+ Runtimes MAY also implement custom option strings that are not listed in the table above.
155+ If a custom option string is already recognized by [ ` mount(8) ` ] [ mount.8 ] , the runtime SHOULD follow the behavior of [ ` mount(8) ` ] [ mount.8 ] .
156+
157+ Runtimes SHOULD pass unknown options to [ ` mount(2) ` ] [ mount.2 ] via the fifth argument (` const void *data ` ).
158+
85159### Example (Windows)
86160
87161``` json
@@ -1004,6 +1078,7 @@ Here is a full example `config.json` for reference.
10041078[ mount.8 ] : http://man7.org/linux/man-pages/man8/mount.8.html
10051079[ mount.8-filesystem-independent ] : http://man7.org/linux/man-pages/man8/mount.8.html#FILESYSTEM-INDEPENDENT_MOUNT_OPTIONS
10061080[ mount.8-filesystem-specific ] : http://man7.org/linux/man-pages/man8/mount.8.html#FILESYSTEM-SPECIFIC_MOUNT_OPTIONS
1081+ [ mount_setattr.2 ] : http://man7.org/linux/man-pages/man2/mount_setattr.2.html
10071082[ getrlimit.2 ] : http://man7.org/linux/man-pages/man2/getrlimit.2.html
10081083[ getrlimit.3 ] : http://pubs.opengroup.org/onlinepubs/9699919799/functions/getrlimit.html
10091084[ stdin.3 ] : http://man7.org/linux/man-pages/man3/stdin.3.html
0 commit comments