我alpine
在Dockerfile中使用(或基于Alpine的映像)作为基础映像。创建用户需要添加哪些说明?
最终,我将使用该用户来运行将放置到容器中的应用程序,以便root用户不会。
Answers:
Alpine使用命令adduser
和addgroup
创建用户和组(而不是useradd
和usergroup
)。
FROM alpine:latest
# Create a group and user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
# Tell docker that all future commands should run as the appuser user
USER appuser
的标志adduser
是:
用法:adduser [OPTIONS] USER [GROUP] 创建新用户,或将USER添加到GROUP -h DIR主目录 -g GECOS GECOS领域 -s SHELL登录外壳 -G GRP集团 -S创建系统用户 -D不要分配密码 -H不要创建主目录 -u UID用户ID -k SKEL骨架目录(/ etc / skel)
USER guest
呢?
adduser
和addgroup
命令不同于Debian和Ubuntu提供的和命令,adduser
而addgroup
Debian和Ubuntu则是useradd
and的前端groupadd
。值得注意的是,Debian和Ubuntu命令仅支持长格式选项。参见:manpages.debian.org/stretch/adduser/adduser.8.en.html
命令是adduser
和addgroup
。
这是Docker的模板,可以在busybox环境(高山)以及基于Debian的环境(Ubuntu等)中使用:
ENV USER=docker
ENV UID=12345
ENV GID=23456
RUN adduser \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$USER" \
--no-create-home \
--uid "$UID" \
"$USER"
请注意以下几点:
--disabled-password
防止提示输入密码--gecos ""
在基于Debian的系统上绕过“全名”等提示--home "$(pwd)"
将用户的住所设置为WORKDIR。您可能不想要这个。--no-create-home
防止将Cruft从以下位置复制到目录中 /etc/skel
这些应用程序的用法说明缺少adduser和addgroup代码中存在的长标志。
以下长格式标志在高山以及debian衍生物中均应起作用:
BusyBox v1.28.4 (2018-05-30 10:45:57 UTC) multi-call binary.
Usage: adduser [OPTIONS] USER [GROUP]
Create new user, or add USER to GROUP
--home DIR Home directory
--gecos GECOS GECOS field
--shell SHELL Login shell
--ingroup GRP Group (by name)
--system Create a system user
--disabled-password Don't assign a password
--no-create-home Don't create home directory
--uid UID User id
要注意的一件事是,如果--ingroup
未设置,则会分配GID以匹配UID。如果与提供的UID对应的GID已经存在,则adduser将失败。
BusyBox v1.28.4 (2018-05-30 10:45:57 UTC) multi-call binary.
Usage: addgroup [-g GID] [-S] [USER] GROUP
Add a group or add a user to a group
--gid GID Group id
--system Create a system group
在尝试编写自己的替代品来替代fixuid项目以将容器作为主机UID / GID运行时,我发现了所有这些内容。
我的入口点帮助程序脚本可以在GitHub上找到。
目的是将该脚本作为第一个参数,ENTRYPOINT
该参数应使Docker从相关的绑定安装中推断出UID和GID。
可能需要环境变量“ TEMPLATE”来确定应从何处推断出权限。
(在撰写本文时,我没有脚本的文档。它仍在待办事项清单上!)
USER 405
Alpine Linux中的来宾用户。