Docker コンテナ内に一般ユーザーを作成する
Docker
のコンテナ内に一般ユーザーを作成する方法を紹介します。
コンテナ内の操作はすべてroot権限で実行されるため、コンテナ内でコマンドなどで作成したファイルはホスト側から編集できません。(管理者権限でないと編集できません)
それでは開発時に都合が悪いので、コンテナにユーザーを作成します。
以下の例はDockerfile
の中でdocker
というユーザーを作成しています。
UID
(ユーザーID)とGID
(グループID)はホスト側のユーザーと同じにします。
ホスト側のUID
とGID
はid
コマンドで確認できます。
$ id
uid=1000(username) gid=1000(groupname) ...
DockerFile
FROM php:7-fpm
# ユーザーを作成
ARG UID=1000
RUN useradd -m -u ${UID} docker
# 作成したユーザーに切り替える
USER ${UID}
sudoユーザーを追加する場合
sudo権限を付与する場合は以下のようにsudoグループに追加します。
以下の例では、UID
, ユーザー名
, パスワード
をパラメータにセットして、ユーザーを作成しています。
ユーザー作成後はパスワードを設定しています。
DockerFile
FROM php:7-fpm
# ユーザーを作成
ARG DOCKER_UID=1000
ARG DOCKER_USER=docker
ARG DOCKER_PASSWORD=docker
RUN useradd -m --uid ${DOCKER_UID} --groups sudo ${DOCKER_USER} \
&& echo ${DOCKER_USER}:${DOCKER_PASSWORD} | chpasswd
# 作成したユーザーに切り替える
USER ${DOCKER_USER}