我想在本地构建奇点接收器,而不是依赖奇点集线器并将有限的每日构建配额浪费在修复愚蠢的语法错误上。但是,我不是运行容器的机器上的管理员。我想在 Singularity hub 上构建一个容器,我是一个管理员,可以在其中构建其他其他容器。但是,我尝试构建一个我可以使用的容器sudo
并su
让我认为这是不可能的。有没有办法设置一个容器,我可以在其中构建容器,如果是这样,我目前的方法有什么问题?
我的食谱中有以下代码来创建用户“ubuntu”,密码为“ubuntu”,并且是“sudo”组的成员:
Bootstrap:docker
From:ubuntu:xenial
#...some other stuff that doesn't matter here...
%post
apt-get update
apt-get install -y sudo
useradd ubuntu
echo "ubuntu:ubuntu" | chpasswd
usermod -aG sudo ubuntu
该配方在 Singularity hub 上成功构建。但是,我不能在容器内使用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
这是否太不安全而无法实现?如果可能的话,我如何制作一个可以用来构建容器的容器?