Ubuntu 在我不是管理员的系统上,是否可以从容器中构建容器?

Ubuntu 在我不是管理员的系统上,是否可以从容器中构建容器?,ubuntu,singularity-container,Ubuntu,Singularity Container,我希望在本地构建singularity recpies,而不是依赖singularity hub,将有限的每日构建配额浪费在修复愚蠢的语法错误上。但是,我不是运行容器的机器上的管理员。我想在Singularity hub上构建一个容器,在其中我是一名管理员,可以构建其他容器。然而,我试图构建一个可以使用sudo和su的容器,这让我觉得这是不可能的。有没有办法建立一个容器,我可以在其中构建容器,如果有,我目前的方法有什么问题 我的配方中有以下代码,可以创建一个用户“ubuntu”,密码为“ubun

我希望在本地构建singularity recpies,而不是依赖singularity hub,将有限的每日构建配额浪费在修复愚蠢的语法错误上。但是,我不是运行容器的机器上的管理员。我想在Singularity hub上构建一个容器,在其中我是一名管理员,可以构建其他容器。然而,我试图构建一个可以使用
sudo
su
的容器,这让我觉得这是不可能的。有没有办法建立一个容器,我可以在其中构建容器,如果有,我目前的方法有什么问题

我的配方中有以下代码,可以创建一个用户“ubuntu”,密码为“ubuntu”,并且是“sudo”组的成员:

该配方成功构建在奇点中心上。但是,我不能在容器中使用
sudo
su

$singularity build --sandbox xenial shub://path/to/my/container:xenial
<container builds with some warnings about my account being non-root>
$singularity shell xenial
Singularity: Invoking an interactive shell within container...

Singularity xenial$ su ubuntu
Password:            #I type "ubuntu"
su: Authentication failure
Singularity xenial$ sudo whoami
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
Singularity xenial$ls -l /usr/bin/sudo
-rwxr-xr-x. 1 hbraunDSP dip 136808 Jun 10 22:53 /usr/bin/sudo
$singularity build——沙盒xenialshub://path/to/my/container:xenial
$singularity shell xenial
奇点:在容器中调用交互式shell。。。
奇点xenial$su ubuntu
密码:#我输入“ubuntu”
su:身份验证失败
奇点xenial$sudo whoami
sudo:/usr/bin/sudo必须由uid 0拥有,并且设置了setuid位
奇点xenial$ls-l/usr/bin/sudo
-rwxr-xr-x。1 hbraunDSP dip 136808 Jun 10 22:53/usr/bin/sudo

这是不是太不安全了?如果可能的话,我如何制作一个可用于构建容器的容器?

默认情况下,Singularity mounts
/etc/passwd
,因此容器内可用的用户与主机上的用户相同。因此,你添加的新的
ubuntu
用户并不存在,因为当你被炮击到图像中时,图像就不存在了

如果您想在运行另一个奇点映像时构建奇点映像,至少需要
sudo singularity shell…
,以便保留sudo/root权限

或者,如果使用
--privileged
选项,您可以从Docker容器内部构建奇点图像。

谢谢。“至少你需要sudo奇点外壳…”回答了我的问题。如果没有主机上的sudo权限,就不可能做我想做的事情。我决定在我的笔记本电脑上安装一个虚拟机来进行构建。另外,关于安装/etc/passwd的好信息。
$singularity build --sandbox xenial shub://path/to/my/container:xenial
<container builds with some warnings about my account being non-root>
$singularity shell xenial
Singularity: Invoking an interactive shell within container...

Singularity xenial$ su ubuntu
Password:            #I type "ubuntu"
su: Authentication failure
Singularity xenial$ sudo whoami
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
Singularity xenial$ls -l /usr/bin/sudo
-rwxr-xr-x. 1 hbraunDSP dip 136808 Jun 10 22:53 /usr/bin/sudo