/etc/passwd, /etc/group. /etc/shadow でユーザとグループを管理している場合の話。
忘れそうだったのでメモ。
今回、JupyterHub の構築をしていて、docker イメージ使うと簡単そうだったので利用したのだけど、ホストのユーザが JupyterHub を使えるようにしたかったので、いろいろ試行錯誤した。
結論としては以下のようにするのがよさそう。
- ユーザ管理(追加、削除など)はホスト側で行う
- Docker コンテナはホストの
/etc/{passwd,group,shadow}を Read-Only で参照
→docker run -v src:dst:roを使う - ユーザ管理コマンドで
/etc/{passwd,group,shadow}の i-node が変わっても良いようにする
→ ディレクトリ単位でバインドする、ただし、Docker コンテナの /etc をホストの /etc で上書きしてしまうのは困るので、どちらの内容が見えるかはファイルごとに制御したい
そのために、
/import/etc/を作成する- イメージにもともとある
/etc/{passwd,group,shadow}を/import/etc/に移動する cd /etc; ln -s /import/etc/{passwd,group,shadow}してシンボリックリンクするdocker run -v /etc:/import/etc:ro -v /home:/homeとしてディレクトリごとマウントする
多分、これでOK。
