Dan*_*ann 63 docker alpine-linux
我正在使用alpine(或基于Alpine的图像)作为我的Dockerfile中的基本图像.我需要添加哪些说明来创建用户?
最终我将使用此用户运行我将放入容器的应用程序,以便root用户不会.
Dan*_*ann 127
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
Run Code Online (Sandbox Code Playgroud)
标志adduser是:
Usage: adduser [OPTIONS] USER [GROUP]
Create new user, or add USER to GROUP
-h DIR Home directory
-g GECOS GECOS field
-s SHELL Login shell
-G GRP Group
-S Create a system user
-D Don't assign a password
-H Don't create home directory
-u UID User id
-k SKEL Skeleton directory (/etc/skel)
rex*_*poo 31
命令是adduser和addgroup。
这是Docker的模板,可以在busybox环境(高山)和基于Debian的环境(Ubuntu等)中使用:
ENV USER=docker
ENV UID=12345
ENV GID=23456
RUN addgroup --gid "$GID" "$USER" \
&& adduser \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$USER" \
--no-create-home \
--uid "$UID" \
"$USER"
Run Code Online (Sandbox Code Playgroud)
请注意以下几点:
--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
Run Code Online (Sandbox Code Playgroud)
要注意的一件事是,如果--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
Run Code Online (Sandbox Code Playgroud)
在尝试编写自己的替代方法来代替fixuid项目时,我发现了所有这些内容,以便将容器作为主机UID / GID运行。
我的入口点帮助程序脚本可以在GitHub上找到。
目的是在该脚本之前添加第一个参数,ENTRYPOINT该参数将导致Docker从相关的绑定安装中推断UID和GID。
可能需要环境变量“ TEMPLATE”来确定应从何处推断出权限。
(在撰写本文时,我没有脚本的文档。它仍在待办事项清单上!)
gav*_*koa 16
有一个包shadow带来useradd& usermod。
adduser有一些愚蠢的限制:
$ sudo adduser --disabled-password root
adduser: user 'root' in use
Run Code Online (Sandbox Code Playgroud)
但usermod没有:
$ sudo apk add shadow
$ sudo usermod --unlock root
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49403 次 |
| 最近记录: |