教程

教程

我使用以下方式创建容器

# debootstrap --variant=minbase --include=systemd,iproute2 buster "/var/lib/machines/test"

然后我用以下方法运行它:

# systemd-nspawn --machine test

仅用于测试目的。容器启动后,当我尝试使用以下命令访问它时,machinectl出现错误:

# machinectl shell test
Failed to get shell PTY: Protocol error

经过一番谷歌搜索后,我发现有一个产生此行为的旧错误,但这个问题已在systemd v226,并且/usr/bin/systemd --version在我的 Debian 上显示版本 246。

我可以使用“非 systemd 容器”方法,但我的容器运行 systemd,我应该能够使用machinectl

答案1

我好像失踪了dbus 容器内部

# chroot /var/lib/machines/test apt install dbus

或者从头开始使用:

# debootstrap --variant=minbase --include=systemd,dbus buster "/var/lib/machines/test"

两者都解决了问题。

答案2

教程

创建 Debian 容器

此步骤创建了包含两个基本包的最小容器,以便以后轻松执行“machinectl login debiancontainer”,而不会出现任何“无法获取登录 PTY”错误。请注意,没有 minbase(这可以避免使用 passwd 时出错)。

debootstrap --include=systemd,dbus unstable /var/lib/machines/debiancontainer

设置 root 密码

此一次性步骤在新容器内配置 root 密码。

systemd-nspawn --machine debiancontainer

应遵循的示例输出

 systemd-nspawn --machine debiancontainer 
Spawning container debiancontainer on /var/lib/machines/debiancontainer.
Press ^] three times within 1s to kill container.
root@debiancontainer:~#

现在只需执行并使用 exit 或 CTRL-D 完成

root@debiancontainer:~# passwd
New password: 
Retype new password: 
passwd: password updated successfully
root@debiancontainer:~# 
logout

使用 machinectl 启动容器

注意:这些命令可以作为普通用户使用,因此请在请求者对话框中提供适用的密码。

machinectl start debiancontainer
machinectl list

示例输出:

local@yourhost:~$ machinectl list
MACHINE         CLASS     SERVICE        OS     VERSION ADDRESSES
debiancontainer container systemd-nspawn debian -       -        

1 machines listed.

使用 machinectl 登录

示例输出

$ machinectl login debiancontainer
Connected to machine debiancontainer. Press ^] three times within 1s to exit session.

Debian GNU/Linux bookworm/sid yourhost pts/1

yourhost login: root
Password: 
Linux yourhost 5.13.19-2 #1 SMP 5.13.19-4 (Mon, 29 Nov 2021 12:10:09 +0100) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@yourhost:~#

相关内容