在Docker容器

时间:2018-01-05 00:28:14

标签: linux docker

我正在使用Ubuntu 14.04 Trusty Tahr,快速浏览/etc/group揭示

$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:
floppy:x:25:
tape:x:26:
sudo:x:27:
audio:x:29:
dip:x:30:
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
libuuid:x:101:
netdev:x:102:
crontab:x:103:
syslog:x:104:
ntp:x:105:
ssh:x:106:

当我尝试添加staff时,我收到了一条错误消息(因为staff已经定义了gid 50)。

$ groupadd --gid 20 --non-unique staff
groupadd: group 'staff' already exists

意外的部分是我尝试添加staff组的用户时。

$ useradd --groups staff --no-create-home --no-user-group --non-unique --root /projects/ --uid 502 username
useradd: group 'staff' does not exist

我在这里做错了什么?它不相信它是特定于Docker的,但我只是想提一下它是否重要。

1 个答案:

答案 0 :(得分:1)

您的问题是使用--root参数。如果您查看useradd man page,则会注意--root指定chroot目录:

-R, --root CHROOT_DIR
           Apply changes in the CHROOT_DIR directory and use the configuration
           files from the CHROOT_DIR directory.

这意味着当您通过--root projects时,useradd命令将会查找/projects/etc/passwd/projects/etc/group等。这些命令不存在,从而导致“不存在”错误。

我想知道你的意思是--home-dir还是--base-dir而不是--root