如何在高山Dockerfile中使用密码创建和添加用户? [英] How to create and add user with password in alpine Dockerfile?
本文介绍了如何在高山Dockerfile中使用密码创建和添加用户?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下 Dockerfile
在Ubuntu上可以正常使用
The following Dockerfile
works fine for Ubuntu:
FROM ubuntu:20.04
SHELL ["/bin/bash", "-c"]
ARG user=hakond
ARG home=/home/$user
RUN useradd --create-home -s /bin/bash $user \
&& echo $user:ubuntu | chpasswd \
&& adduser $user sudo
WORKDIR $home
USER $user
COPY --chown=$user entrypoint.sh .
RUN chmod +x entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]
其中 entrypoint.sh
是
#! /bin/bash
exec bash
我如何在Alpine中做同样的事情?我试过了:
How can I do the same in Alpine? I tried:
FROM alpine:3.12
SHELL ["/bin/sh", "-c"]
RUN apk add --no-cache bash
ARG user=hakond
ARG home=/home/$user
RUN addgroup -S docker
RUN adduser \
--disabled-password \
--gecos "" \
--home $home \
--ingroup docker \
$user
WORKDIR $home
USER $user
COPY chown=$user entrypoint.sh .
RUN chmod +x entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]
但这无法建立:
$ docker build -t alpine-user .
Sending build context to Docker daemon 5.12kB
Step 1/12 : FROM alpine:3.12
---> a24bb4013296
Step 2/12 : SHELL ["/bin/sh", "-c"]
---> Using cache
---> ce9a303c96c8
Step 3/12 : RUN apk add --no-cache bash
---> Running in e451a2481846
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
(1/4) Installing ncurses-terminfo-base (6.2_p20200523-r0)
(2/4) Installing ncurses-libs (6.2_p20200523-r0)
(3/4) Installing readline (8.0.4-r0)
(4/4) Installing bash (5.0.17-r0)
Executing bash-5.0.17-r0.post-install
Executing busybox-1.31.1-r16.trigger
OK: 8 MiB in 18 packages
Removing intermediate container e451a2481846
---> 7b5f7f87bdf6
Step 4/12 : ARG user=hakond
---> Running in 846b4b12856e
Removing intermediate container 846b4b12856e
---> a0453cb6706e
Step 5/12 : ARG home=/home/$user
---> Running in 06550ad3f550
Removing intermediate container 06550ad3f550
---> 994d71fb0281
Step 6/12 : RUN addgroup -S docker
---> Running in 70aaec6f40e0
Removing intermediate container 70aaec6f40e0
---> 5188ed7b234c
Step 7/12 : RUN adduser --disabled-password --gecos "" --home $home --ingroup docker $user
---> Running in ff36a7f7e99b
Removing intermediate container ff36a7f7e99b
---> 97f481916feb
Step 8/12 : WORKDIR $home
---> Running in 8d7f0411d6e3
Removing intermediate container 8d7f0411d6e3
---> 5de66f4b5d4e
Step 9/12 : USER $user
---> Running in ac4abac7c3a8
Removing intermediate container ac4abac7c3a8
---> dffd2185df1f
Step 10/12 : COPY chown=$user entrypoint.sh .
COPY failed: stat /var/snap/docker/common/var-lib-docker/tmp/docker-builder615220199/chown=hakond: no such file or directory
推荐答案
您成功创建了新用户,只是在 COPY
命令.
You created your new user successfully, you just wrote chown
instead of --chown
in your COPY
command.
您的Dockerfile应该如下所示:
Your Dockerfile should look like:
FROM alpine:3.12
SHELL ["/bin/sh", "-c"]
RUN apk add --no-cache bash
ARG user=hakond
ARG home=/home/$user
RUN addgroup -S docker
RUN adduser \
--disabled-password \
--gecos "" \
--home $home \
--ingroup docker \
$user
WORKDIR $home
USER $user
COPY --chown=$user entrypoint.sh .
RUN chmod +x entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]
这篇关于如何在高山Dockerfile中使用密码创建和添加用户?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文