Logical Rabbit.

さくらのVPS

Docker関連のメモ(O'reillyの「Docker」に見つからないものを中心に)

Dockerfile の ARG に対する値入力

--build-arg <変数名>=<値>

複数の場合は1つずつ。

--build-arg <変数名1>=<値> --build-arg <変数名2>=<値>

Docker外とDoker内で作業ユーザを一致させたい

この方法が本当に最適解なのかは分からないが。Doker内に既存の一般ユーザが居ない前提。

docker buildへの指定:

--build-arg USER_ID=`id -u` --build-arg USER_GROUP_ID=`id -g` --build-arg USER_NAME=`id -un`

Dockerfile内:

ARG USER_ID
ARG USER_GROUP_ID
ARG USER_NAME

RUN groupadd -g $USER_GROUP_ID $USER_NAME \
  && useradd -u $USER_ID -g $USER_NAME -m $USER_NAME

さらに作業ディレクトリVOLUMEを作業ユーザで使えるようにする

Dockerfile内:

RUN mkdir -p /mnt/work_dir_root/workarea
  && chown -R $USER_NAME:$USER_NAME /mnt/work_dir_root/workarea

VOLUME /mnt/work_dir_root

USER $USER_NAME

VOLUMEに書いたディレクトリ直接だと(マウントポイントなので)chownが使えないので、さらに一段掘って作業エリアとする。

オンラインの参考資料 (Docker ドキュメント日本語化プロジェクト)