- systemd.index 中文手册
- systemd.directives 中文手册
- binfmt.d 中文手册
- bootctl 中文手册
- bootup 中文手册
- busctl 中文手册
- coredump.conf 中文手册
- coredumpctl 中文手册
- crypttab 中文手册
- daemon 中文手册
- dnssec-trust-anchors.d 中文手册
- environment.d 中文手册
- file-hierarchy 中文手册
- halt 中文手册
- hostname 中文手册
- hostnamectl 中文手册
- hwdb 中文手册
- journal-remote.conf 中文手册
- journal-upload.conf 中文手册
- journalctl 中文手册
- journald.conf 中文手册
- kernel-command-line 中文手册
- kernel-install 中文手册
- loader.conf 中文手册
- locale.conf 中文手册
- localectl 中文手册
- localtime 中文手册
- loginctl 中文手册
- logind.conf 中文手册
- machine-id 中文手册
- machine-info 中文手册
- machinectl 中文手册
- modules-load.d 中文手册
- networkctl 中文手册
- networkd.conf 中文手册
- nss-myhostname 中文手册
- nss-mymachines 中文手册
- nss-resolve 中文手册
- nss-systemd 中文手册
- os-release 中文手册
- pam_systemd 中文手册
- portablectl 中文手册
- resolvectl 中文手册
- resolved.conf 中文手册
- shutdown 中文手册
- sysctl.d 中文手册
- systemctl 中文手册
- systemd 中文手册
- systemd-analyze 中文手册
- systemd-ask-password 中文手册
- systemd-ask-password-console.service 中文手册
- systemd-backlight@.service 中文手册
- systemd-binfmt.service 中文手册
- systemd-bless-boot-generator 中文手册
- systemd-bless-boot.service 中文手册
- systemd-boot 中文手册
- systemd-boot-check-no-failures.service 中文手册
- systemd-cat 中文手册
- systemd-cgls 中文手册
- systemd-cgtop 中文手册
- systemd-coredump 中文手册
- systemd-cryptsetup-generator 中文手册
- systemd-cryptsetup@.service 中文手册
- systemd-debug-generator 中文手册
- systemd-delta 中文手册
- systemd-detect-virt 中文手册
- systemd-environment-d-generator 中文手册
- systemd-escape 中文手册
- systemd-firstboot 中文手册
- systemd-fsck@.service 中文手册
- systemd-fstab-generator 中文手册
- systemd-getty-generator 中文手册
- systemd-gpt-auto-generator 中文手册
- systemd-halt.service 中文手册
- systemd-hibernate-resume-generator 中文手册
- systemd-hibernate-resume@.service 中文手册
- systemd-hostnamed.service 中文手册
- systemd-hwdb 中文手册
- systemd-id128 中文手册
- systemd-importd.service 中文手册
- systemd-inhibit 中文手册
- systemd-initctl.service 中文手册
- systemd-journal-gatewayd.service 中文手册
- systemd-journal-remote.service 中文手册
- systemd-journal-upload.service 中文手册
- systemd-journald.service 中文手册
- systemd-localed.service 中文手册
- systemd-logind.service 中文手册
- systemd-machine-id-commit.service 中文手册
- systemd-machine-id-setup 中文手册
- systemd-machined.service 中文手册
- systemd-makefs@.service 中文手册
- systemd-modules-load.service 中文手册
- systemd-mount 中文手册
- systemd-networkd-wait-online.service 中文手册
- systemd-networkd.service 中文手册
- systemd-notify 中文手册
- systemd-nspawn 中文手册
- systemd-path 中文手册
- systemd-portabled.service 中文手册
- systemd-quotacheck.service 中文手册
- systemd-random-seed.service 中文手册
- systemd-rc-local-generator 中文手册
- systemd-remount-fs.service 中文手册
- systemd-resolved.service 中文手册
- systemd-rfkill.service 中文手册
- systemd-run 中文手册
- systemd-run-generator 中文手册
- systemd-sleep.conf 中文手册
- systemd-socket-activate 中文手册
- systemd-socket-proxyd 中文手册
- systemd-suspend.service 中文手册
- systemd-sysctl.service 中文手册
- systemd-system-update-generator 中文手册
- systemd-system.conf 中文手册
- systemd-sysusers 中文手册
- systemd-sysv-generator 中文手册
- systemd-time-wait-sync.service 中文手册
- systemd-timedated.service 中文手册
- systemd-timesyncd.service 中文手册
- systemd-tmpfiles 中文手册
- systemd-tty-ask-password-agent 中文手册
- systemd-udevd.service 中文手册
- systemd-update-done.service 中文手册
- systemd-update-utmp.service 中文手册
- systemd-user-sessions.service 中文手册
- systemd-vconsole-setup.service 中文手册
- systemd-veritysetup-generator 中文手册
- systemd-veritysetup@.service 中文手册
- systemd-volatile-root.service 中文手册
- systemd.automount 中文手册
- systemd.device 中文手册
- systemd.dnssd 中文手册
- systemd.environment-generator 中文手册
- systemd.exec 中文手册
- systemd.generator 中文手册
- systemd.journal-fields 中文手册
- systemd.kill 中文手册
- systemd.link 中文手册
- systemd.mount 中文手册
- systemd.netdev 中文手册
- systemd.network 中文手册
- systemd.nspawn 中文手册
- systemd.offline-updates 中文手册
- systemd.path 中文手册
- systemd.preset 中文手册
- systemd.resource-control 中文手册
- systemd.scope 中文手册
- systemd.service 中文手册
- systemd.slice 中文手册
- systemd.socket 中文手册
- systemd.special 中文手册
- systemd.swap 中文手册
- systemd.syntax 中文手册
- systemd.target 中文手册
- systemd.time 中文手册
- systemd.timer 中文手册
- systemd.unit 中文手册
- sysusers.d 中文手册
- timedatectl 中文手册
- timesyncd.conf 中文手册
- tmpfiles.d 中文手册
- udev 中文手册
- udev.conf 中文手册
- udevadm 中文手册
- user@.service 中文手册
- vconsole.conf 中文手册
systemd.nspawn 中文手册
名称
systemd.nspawn — 容器配置
大纲
/etc/systemd/nspawn/
machine
.nspawn
/run/systemd/nspawn/
machine
.nspawn
/var/lib/machines/
machine
.nspawn
描述
容器配置文件(后缀名必须是.nspawn
)用于封装本地容器的运行时配置。systemd-nspawn(1)将会在启动一个容器时,搜索并读取对应的容器配置文件。容器配置文件的名称必须与其定义的本地容器的名称保持一致。这些配置文件并非必须,仅在某个容器的执行环境确实与默认配置不一致的时候,才有可能需要专门使用一个特定的配置文件。因为容器配置文件中的各项配置大多可以直接在 systemd-nspawn 命令行上指定,所以仅在确实需要将某个容器的特殊配置持久保存起来的时候,才必须专门使用一个特定的配置文件。容器配置文件的语法与XDGDesktop Entry Specification 规定的 .desktop
文件以及 Microsoft Windows 的.ini
文件相同。
单元文件中的布尔值可以有多种写法。[ 1
, yes
, true
, on
] 含义相同,[ 0
, no
,false
, off
]含义相同。
空白行和以 # 或 ; 开头的行都会被忽略。行尾的反斜线(\)视为续行符,并在续行时被替换为一个空格符。
.nspawn
文件搜索规则
容器配置文件的名称由容器的名称加上.nspawn
后缀确定,容器的名称可以明确的通过 systemd-nspawn 命令的--machine=
选项指定,也可以根据目录或镜像文件的名称派生。如果在/etc/systemd/nspawn/
与/run/systemd/nspawn/
目录中找到了对应的配置文件,那么将会应用其中的全部配置(但依然有可能会被命令行上的设置所覆盖),同时将会停止进一步的搜索。如果没有找到对应的配置文件,那么将会进一步在容器镜像文件的所在目录、或容器根目录的所在父目录中搜索。如果找到了对应的配置文件,那么将会仅应用其中的非特权指令,所有特权指令,也就是有可能造成权限提升或者要求访问主机资源(例如主机的文件或目录)的配置指令,都将被忽略。至于究竟有哪些选项属于特权指令,请继续阅读后文。
由系统管理员维护的配置文件(可信任)应该放在/etc/systemd/nspawn/
目录中,而由容器发行商提供的配置文件(不可信任)应该放在/var/lib/machines/
目录中。注意,/var/lib/machines/
目录下的配置文件中包含的特权指令(见上文)都将被忽略。如果你想要在容器发行商提供的配置文件中添加特权指令,那么应该将容器发行商提供的配置文件复制到/etc/systemd/nspawn/
目录中,然后编辑它,这样才能使得特权指令生效。关于如何搜索与解释容器配置文件的精确规则,可以通过systemd-nspawn 的 --settings=
选项进行设置,详见systemd-nspawn(1)手册。
[Exec] 小节选项
可以在容器配置文件中包含 "[Exec]
"小节,用于设置各种与进程执行相关的参数:
Boot=
接受一个布尔值,默认值为 no 。若设为 yes 则表示 systemd-nspawn 将会自动搜索并调用一个
init
进程,同时将Parameters=
设置的命令行参数传递给被调用的init
进程。此选项与 systemd-nspawn 的--boot
命令行开关相对应。注意:(1)Boot=yes
不可与ProcessTwo=yes
同时使用。(2)当使用systemd-nspawn@.service
模版时,就隐含的设置了ProcessTwo=yes
。Ephemeral=
接受一个布尔值,默认值为 no 。若设为 yes 则表示以无痕模式运行容器,也就是,在启动时为容器的文件系统生成一个临时快照,并在容器终止时立即删除这个快照。此选项等价于
--ephemeral
命令行选项(参见 systemd-nspawn(1) 手册)。ProcessTwo=
接受一个布尔值,默认值为 no 。若设为 yes 则表示以 PID=2 运行指定的进程。此选项与 systemd-nspawn 的
--as-pid2
命令行开关相对应。因为 init 进程必须以 PID=1 运行,所以ProcessTwo=yes
不可与Boot=yes
同时使用。Parameters=
接受一个空格分隔的参数列表。当
Boot=no
时,它必须是一个以二进制可执行文件开头的命令行(可以带有命令行参数); 当Boot=yes
时,它必须是传递给被调用的 init 进程的命令行参数。此选项的值与传递给 systemd-nspawn 的命令行参数相对应。Environment=
接受一个以 "
key=value
" 格式表示的环境变量赋值表达式。用于给被调用的容器主进程设置环境变量。可以多次使用此选项以设置多个环境变量。此选项与 systemd-nspawn 的--setenv=
命令行选项相对应。User=
接受一个 UNIX 用户名。用于设置运行容器主进程的用户。该用户必须在容器内部真实存在。此选项与 systemd-nspawn 的
--user=
命令行选项相对应。WorkingDirectory=
设置容器内部进程的工作目录。必须设为一个以容器内部的文件系统名字空间为基准的绝对路径。此选项与 systemd-nspawn 的
--chdir=
命令行选项相对应。PivotRoot=
设置在容器启动后,用于在容器内部取代
/
的替代目录。可以设为一个单独的绝对路径或者一对冒号分隔的绝对路径。这些绝对路径都必须以容器内部的文件系统名字空间为基准。此选项与 systemd-nspawn 的--pivot-root=
命令行选项相对应。Capability=
,DropCapability=
接受一个 空格分隔的 capabilities(7) 列表。
Capability=
用于在默认已经拥有的 capabilities 基础之上添加更多的 capabilities ;DropCapability=
用于在默认已经拥有的 capabilities 基础之上删除特定的 capabilities 。此二选项分别与 systemd-nspawn 的--capability=
与--drop-capability=
命令行选项相对应。注意,Capability=
是一个特权指令,仅在.nspawn
文件位于/etc/systemd/nspawn/
与/run/system/nspawn/
目录中时才能生效(见上文)。而DropCapability=
是非特权指令,在所有位置都有效。NoNewPrivileges=
接受一个布尔值,为容器中的进程设置
PR_SET_NO_NEW_PRIVS
标记的值。此选项等价于--no-new-privileges=
命令行选项(参见 systemd-nspawn(1) 手册)。KillSignal=
当 systemd-nspawn 自身接收到 SIGTERM 信号时,应该给容器内 PID=1 进程发送什么信号,从而使得容器可以正常有序的关闭。当
Boot=yes
时默认值为 SIGRTMIN+3 (对于兼容 systemd 规范的 init 来说,SIGRTMIN+3 信号会触发正常的关机流程)。所有可用的信号请参考 signal(7) 手册。Personality=
设置容器的体系架构(目前仅支持 "
x86
" 与 "x86-64
" 两个值)。此选项与 systemd-nspawn 的--personality=
命令行选项相对应。MachineID=
设置传递给容器的128位"machine ID"(UUID) 。此选项与 systemd-nspawn 的
--uuid=
命令行选项相对应。这是一个特权指令(见前文)。PrivateUsers=
设置容器对用户名字空间的支持。此选项与 systemd-nspawn 的
--private-users=
命令行选项相对应,并且可以接受的值也完全相同。这是一个特权指令(见前文)。对于从systemd-nspawn@.service
模版实例化而来的容器来说,此选项的默认值为 yes 。NotifyReady=
设置容器内的 init 进程对通知机制的支持。此选项等价于 systemd-nspawn 的
--notify-ready=
命令行选项,并且可以接受的值也完全相同。详见 systemd-nspawn(1) 手册。SystemCallFilter=
设置容器的系统调用过滤器。此选项等价于 systemd-nspawn 的
--system-call-filter=
命令行选项,并且可以接受的值也完全相同。详见 systemd-nspawn(1) 手册。LimitCPU=
,LimitFSIZE=
,LimitDATA=
,LimitSTACK=
,LimitCORE=
,LimitRSS=
,LimitNOFILE=
,LimitAS=
,LimitNPROC=
,LimitMEMLOCK=
,LimitLOCKS=
,LimitSIGPENDING=
,LimitMSGQUEUE=
,LimitNICE=
,LimitRTPRIO=
,LimitRTTIME=
为容器设置特定的 POSIX 资源限制。等价于
--rlimit=
命令行选项,并且可以接受的值也完全相同。详见 systemd-nspawn(1) 手册。OOMScoreAdjust=
设置该容器的 OOM ("Out Of Memory") 计分调整值。此选项等价于
--oom-score-adjust=
命令行选项,并且可以接受的值也完全相同。详见 systemd-nspawn(1) 手册。CPUAffinity=
设置该容器的CPU关联性。此选项等价于
--cpu-affinity=
命令行选项,并且可以接受的值也完全相同。详见 systemd-nspawn(1) 手册。Hostname=
设置容器的初始主机名。此选项等价于
--hostname=
命令行选项,并且可以接受的值也完全相同。详见 systemd-nspawn(1) 手册。ResolvConf=
如何处理容器内的
/etc/resolv.conf
文件(也就是如何处理宿主系统与容器之间的DNS同步)。此选项等价于--resolv-conf=
命令行选项,并且可以接受的值也完全相同。详见 systemd-nspawn(1) 手册。Timezone=
如何处理容器内的
/etc/localtime
文件(也就是如何处理宿主系统与容器之间的本地时区同步)。此选项等价于--timezone=
命令行选项,并且可以接受的值也完全相同。详见 systemd-nspawn(1) 手册。LinkJournal=
通过软连接或绑定挂载控制容器内的日志对宿主系统的可见性。此选项等价于
--link-journal=
命令行选项,并且可以接受的值也完全相同。详见 systemd-nspawn(1) 手册。
[Files] 小节选项
可以在容器配置文件中包含 "[Files]
"小节,用于设置各种与文件系统相关的参数:
ReadOnly=
接受一个布尔值。默认值为 no 。设为 yes 表示将容器运行在一个只读文件系统上。此选项与 systemd-nspawn 的
--read-only
命令行开关相对应。Volatile=
接受一个布尔值或特殊值 "
state
" ,表示是否以易变的状态和/或配置运行容器。此选项与 systemd-nspawn(1) 的--volatile=
选项相对应。Bind=
,BindReadOnly=
添加一个从主机到容器的绑定挂载点。接受一个单独的路径、或者一对冒号分隔的路径、 或者一个以冒号作为分隔符的"路径:路径:挂载选项"三元组。可以多次使用此选项以添加多个绑定挂载点。此二选项分别与 systemd-nspawn 的
--bind=
与--bind-ro=
命令行选项相对应。详见 systemd-nspawn(1) 手册。此二选项都是特权指令(见前文)。TemporaryFileSystem=
向容器内添加一个 "
tmpfs
" 挂载点。接受一个单独的路径、或者一个以冒号作为分隔符的"路径:挂载选项"。可以多次使用此选项以添加多个 "tmpfs
" 挂载点。此选项与 systemd-nspawn 的--tmpfs=
命令行选项相对应。详见 systemd-nspawn(1) 手册。此选项是特权指令(见前文)。Overlay=
,OverlayReadOnly=
向容器内添加一个 overlay 挂载点。接受一个以冒号作为分隔符的路径列表。可以多次使用此选项以添加多个 overlay 挂载点。此二选项分别与 systemd-nspawn 的
--overlay=
与--overlay-ro=
命令行选项相对应。详见 systemd-nspawn(1) 手册。此二选项都是特权指令(见前文)。PrivateUsersChown=
接受一个布尔值。设为 yes 表示在容器已启用用户名字空间的前提下,是否要将容器内文件与目录的拥有者修改为由
PrivateUsers=
指定的特定范围内的 UID/GID 。此选项与 systemd-nspawn 的--private-users-chown
命令行开关相对应。此选项是特权指令(见前文)。
[Network] 小节选项
可以在容器配置文件中包含 "[Network]
"小节,用于设置各种与网络连接相关的参数:
Private=
接受一个布尔值。默认值为 no 。设为 yes 表示将容器运行在自己专属的网络名字空间内,也就是不与主机共享任何网络接口及网络配置。此选项与 systemd-nspawn 的
--private-network
命令行开关相对应。VirtualEthernet=
接受一个布尔值。设为 yes 表示在主机与容器之间创建一个 虚拟以太网连接("
veth
"),并且自动隐含了Private=yes
的设置。此选项与 systemd-nspawn 的--network-veth
命令行开关相对应。此选项是特权指令(见前文)。对于从systemd-nspawn@.service
模版实例化而来的容器来说,此选项的默认值为 yes 。VirtualEthernetExtra=
在主机与容器之间设置一个 虚拟以太网连接("
veth
")。接受一对冒号分隔的网口名称("主机网口:容器网口"),前一个名称表示主机上的网络接口名称,后一个名称表示容器内的网络接口名称。如果省略后一个,那么表示后一个名称与前一个名称相同。设置此选项的同时也自动隐含了Private=yes
的设置。此选项与 systemd-nspawn 的--network-veth-extra=
命令行选项相对应。可以多次使用此选项以添加多个虚拟以太网连接。此选项与VirtualEthernet=
之间没有关联,两者是互相独立的选项。此选项是特权指令(见前文)。Interface=
设置添加到容器中的网络接口的名称,接受一个空格分隔的网络接口名称列表。此选项与 systemd-nspawn 的
--network-interface=
命令行选项相对应。设置此选项的同时也自动隐含了Private=yes
的设置。此选项是特权指令(见前文)。MACVLAN=
,IPVLAN=
在容器中添加一个 MACLVAN 或 IPVLAN 接口。接受一个空格分隔的、要被添加到 MACLVAN 或 IPVLAN 中的网络接口名称列表。此二选项分别与 systemd-nspawn 的
--network-macvlan=
与--network-ipvlan=
命令行选项相对应。设置此二选项之一的同时也自动隐含了Private=yes
的设置。此选项是特权指令(见前文)。Bridge=
在容器中添加一个网桥,选项的值就是网桥的名称。此选项隐含的设置了
VirtualEthernet=yes
与Private=yes
,并且将创建的虚拟以太网的主机端连接到容器内的网桥上。此选项与 systemd-nspawn 的--network-bridge=
命令行选项相对应。此选项是特权指令(见前文)。Zone=
接受一个网络 zone 名称。此选项隐含的设置了
VirtualEthernet=yes
与Private=yes
并且将创建的虚拟以太网的主机端连接到一个自动管理的网桥上,而这个自动管理的网桥的名称就是此选项的值(网络 zone 名称)再加上 "vz-
" 前缀。此选项与 systemd-nspawn 的--network-zone=
命令行选项相对应。此选项是特权指令(见前文)。Port=
将容器的一个特定 TCP 或 UDP 端口映射到主机的特定端口上。此选项与 systemd-nspawn 的
--port=
命令行选项相对应。有关此选项接受的值的格式及含义,详见 systemd-nspawn(1) 手册。此选项是特权指令(见前文)。
参见
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论