2023/01/09

Dockerfile に USER がないときに docker run -u を指定した場合

docker run -u の説明では Dockerfile の USER を上書きすると言うことだったが、では Dockerfile に USER がなかったらどうなるかが気になった。
まあ、予想は付くが・・・。

$ docker run -v "$PWD/hello_dir:/data" -u 1002:1002  hello-test
[abc]: Hello, Docker!?
[abc]: ReadMe!

$ ls -l hello_dir/abc/
total 8
-rw-rw-r-- 1 hirokuma hirokuma  8 Jan  8 21:48 read.txt
-rw-r--r-- 1 hirokuma hirokuma 15 Jan  9 17:54 test.txt
$

まあ、そうよね。

  • Dockefile に USER の記述がない場合は「USER root:root」である。
  • docker run -u は USER を上書きする。

とするか、

  • docker run -u はユーザ切替を行う(Dockefile の USER よりも優先される)

のような書き方が良いのかね。

そう考えると、カレントユーザになるかならないかはっきりしない USER 指定よりも、何も書かずに root になる方が気付きやすいかもしれない。下手にカレントユーザの UID と Dockefile の USER で指定したユーザの UID が一致すると、うまくいく環境といかない環境が出てきて、何が原因かが分かりづらい気がするのだ。 root になっていると「ああ root だったらダメよね」と気付きやすい。

実に悩ましい話だ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。