알파인을 기본 이미지로 사용할 때 사용자를 추가하려면 어떻게 해야 합니까?
사용하고 있습니다.alpine
(또는 Alpine 기반 이미지)를 내 Docker 파일의 기본 이미지로 지정합니다.사용자를 만들려면 어떤 지침을 추가해야 합니까?
결국 이 사용자를 사용하여 컨테이너에 넣을 애플리케이션을 실행하여 루트 사용자가 실행하지 않도록 하겠습니다.
알파인은 명령을 사용합니다.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] 새 사용자 만들기 또는 그룹에 사용자 추가 -hDIR 홈 디렉토리-g GECOS GECOS 필드-s SHELL 로그인 셸-GRP그룹-S 시스템 사용자 생성-D 암호 할당 안 함-H 홈 디렉토리를 만들지 않습니다.-u UID 사용자 ID-k SKEL 스켈레톤 디렉토리(/etc/skel)
명령은.adduser
그리고.addgroup
.
다음은 debian 기반 환경(Ubuntu 등)뿐만 아니라 busybox 환경(알파인)에서 사용할 수 있는 Docker용 템플릿입니다.
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 기반 시스템에서 "Full Name" 등에 대한 프롬프트를 우회합니다.--home "$(pwd)"
사용자의 집을 WORKDIR로 설정합니다.당신은 이것을 원하지 않을지도 모릅니다.--no-create-home
디렉터리에 크래프트가 복사되는 것을 방지합니다./etc/skel
이러한 응용 프로그램에 대한 사용 설명에 adduser 및 addgroup 코드에 있는 긴 플래그가 없습니다.
다음과 같은 긴 형태의 깃발은 알파인과 데비안 파생물 모두에서 작동해야 합니다.
사용자 추가
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
컨테이너를 호스트 UID/GID로 실행하는 fixuid 프로젝트에 대한 대안을 직접 작성하려고 하다가 이 모든 것을 발견했습니다.
나의 진입점 도우미 스크립트는 깃허브에서 확인할 수 있습니다.
의도는 그 스크립트를 첫번째 인수로 추가하는 것입니다.ENTRYPOINT
도커가 관련 바인딩 마운트에서 UID 및 GID를 추론하도록 해야 합니다.
사용 권한이 어디에서 유추되어야 하는지 결정하기 위해 환경 변수 "TEMPATE"가 필요할 수 있습니다.
(작성 당시 대본에 대한 설명서가 없습니다.아직도 할 일 목록에 있어요!!"
.shadow
s을 가져다 줍니다.useradd
&usermod
.
adduser
몇 같은 다.
$ sudo adduser --disabled-password root
adduser: user 'root' in use
그렇지만usermod
그렇지 않음:
$ sudo apk add shadow
$ sudo usermod --unlock root
언급URL : https://stackoverflow.com/questions/49955097/how-do-i-add-a-user-when-im-using-alpine-as-a-base-image
'programing' 카테고리의 다른 글
오류 1286(42000):알 수 없는 스토리지 엔진 '열 저장소' (0) | 2023.09.24 |
---|---|
WooCommerce에 상품 설명을 위한 숏코드가 있나요? (0) | 2023.09.19 |
이상한 MySQL "읽기 전용" 오류 (0) | 2023.09.19 |
연결이 끊긴 후 SQL 트랜잭션이 롤백되지 않는 이유 - C#? (0) | 2023.09.19 |
봄이 자동으로 배선할 수 없음 맵빈 (0) | 2023.09.19 |