Alpine을 기본 이미지로 사용할 때 사용자를 추가하려면 어떻게해야합니까?

lottogame 2021. 1. 6. 07:42

Alpine을 기본 이미지로 사용할 때 사용자를 추가하려면 어떻게해야합니까?

내가 사용하고 alpine내 Dockerfile의 기본 이미지로 (알파인 기반으로하는 이미지 또는). 사용자를 생성하려면 어떤 지침을 추가해야합니까?

결국이 사용자를 사용하여 루트 사용자가 수행하지 않도록 컨테이너에 배치 할 애플리케이션을 실행합니다.

알파인 명령을 사용 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)

명령은 adduseraddgroup입니다.

다음은 busybox 환경 (알파인) 및 Debian 기반 환경 (Ubuntu 등)에서 사용할 수있는 Docker 용 템플릿입니다.

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" \

다음 사항에 유의하십시오.

  • --disabled-password 암호를 묻지 않습니다.
  • --gecos "" 데비안 기반 시스템에서 "전체 이름"등의 프롬프트를 우회합니다.
  • --home "$(pwd)"사용자의 집을 WORKDIR로 설정합니다. 이것을 원하지 않을 수도 있습니다.
  • --no-create-home cruft가 디렉토리로 복사되는 것을 방지합니다. /etc/skel

이러한 애플리케이션에 대한 사용법 설명 에는 adduseraddgroup 에 대한 코드에 있는 긴 플래그없습니다 .

The following long-form flags should work both in alpine as well as debian-derivatives:


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

One thing to note is that if --ingroup isn't set then the GID is assigned to match the UID. If the GID corresponding to the provided UID already exists adduser will fail.


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

I discovered all of this while trying to write my own alternative to the fixuid project for running containers as the hosts UID/GID.

My entrypoint helper script can be found on GitHub.

The intent is to prepend that script as the first argument to ENTRYPOINT which should cause Docker to infer UID and GID from a relevant bind mount.

An environment variable "TEMPLATE" may be required to determine where the permissions should be inferred from.

(At the time of writing I don't have documentation for my script. It's still on the todo list!!)

ReferenceURL :