alpine
Dockerfileのベースイメージとして(またはAlpineに基づくイメージ)を使用しています。ユーザーを作成するには、どの指示を追加する必要がありますか?
最終的には、このユーザーを使用して、コンテナーに配置するアプリケーションを実行し、ルートユーザーが実行しないようにします。
alpine
Dockerfileのベースイメージとして(または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
コマンドは異なっているadduser
とaddgroup
のDebianとUbuntuによって提供される順番での先端であるuseradd
とはgroupadd
。特に、DebianおよびUbuntuコマンドは、長い形式のオプションのみをサポートします。参照:manpages.debian.org/stretch/adduser/adduser.8.en.html
コマンドはadduser
およびaddgroup
です。
これは、busybox環境(高山)とDebianベースの環境(Ubuntuなど)で使用できる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ベースのシステムでの「フルネーム」などのプロンプトを回避します--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
注意すべき点の1つは、--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プロジェクトの独自の代替を作成しようとしたときに、これらすべてを発見しました。
私のエントリポイントヘルパースクリプトはGitHubにあります。
その目的は、ENTRYPOINT
Dockerが関連するバインドマウントからUIDおよびGIDを推測するようにする最初の引数として、そのスクリプトを先頭に追加することです。
アクセス許可をどこから推測するかを決定するために、環境変数「TEMPLATE」が必要になる場合があります。
(執筆時点では、スクリプトのドキュメントはありません。ToDoリストにまだ残っています!!)
USER 405
これは、Alpine Linux内のゲストユーザーです。