zukucode
主にWEB関連の情報を技術メモとして発信しています。

Docker コンテナ内に一般ユーザーを作成する

Dockerのコンテナ内に一般ユーザーを作成する方法を紹介します。

コンテナ内の操作はすべてroot権限で実行されるため、コンテナ内でコマンドなどで作成したファイルはホスト側から編集できません。(管理者権限でないと編集できません)

それでは開発時に都合が悪いので、コンテナにユーザーを作成します。

以下の例はDockerfileの中でdockerというユーザーを作成しています。

UID(ユーザーID)とGID(グループID)はホスト側のユーザーと同じにします。

ホスト側のUIDGIDidコマンドで確認できます。

$ 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}

関連記事