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