bind mountがうまく実行できない。。
根本的な原因はわかりませんが、とりあえずメモします。
行った実験条件は一番下に記載しました。
PC Cで問題が発生します。
エラーログ
docker runを実行すると下記のようなエラーが発生します。
(base) manyou@manyou:~/001_CODE/101/eval$ ./internal/docker_run.sh
docker run --shm-size=8G --net=host -e DISPLAY= -e TZ=Asia/Tokyo -v /tmp/.x11-unix:/tmp/.x11-unix -v /etc/passwd:/etc/passwd:ro -v /home/manyou/.Xauthority://home/manyou/.Xauthority -v COCO:/workspace/data/coco -v PASCAL:/workspace/data/pascal -v pascal_coco_format:/workspace/data/pascal_coco_format -v IMAGENET:/workspace/data/imagenet -v a2d2_18cls:/workspace/data/a2d2_18cls -v /home/manyou/001_CODE/101/eval/internal/..:/workspace -u 1001:1001 -w /workspace -it --rm cnn-eval:manyou bash -c 'bash ./internal/setup.sh develop; bash'
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/etc/passwd" to rootfs at "/etc/passwd": mount /etc/passwd:/etc/passwd (via /proc/self/fd/7), flags: 0x5001: no such file or directory: unknown.
エラー発生は下記のbind mountです
docker run ... -v /etc/passwd:/etc/passwd:ro ...
同じスクリプトを他のPCで動作させるとエラーなく実行できます。
そのため、PCの環境に原因があると考えました。
環境をチェックして気づいた事
- なぜか、ユーザーグループが無く、もちろんユーザーグループへ所属もしていない。なぜそうなったのかはわからないです。。。
bind mount失敗環境でのidコマンドの実行結果
uid=1001(manyou) groups=27(sudo),1003(docker)
bind mount成功環境でのidコマンドの実行結果
uid=1001(manyou) gid=1001(manyou) groups=1001(manyou),27(sudo),1003(docker)
行ったら改善したこと
- ユーザーグループの作成
- ユーザーグループへユーザーを追加
- dockerをapt upgrade
1,2,で解決すると思ったけど、エラー解消されず。。
dockerのコマンドをアップデートしたら何故かエラー解消。
dockerのコマンドは成功環境A-1でもエラーなく実施できていたバージョン(20.10.21)だったため、バージョンが問題ではないはず。
条件 | A-1 | B-1 | C-1 | C-2 | C-3 |
---|---|---|---|---|---|
PC name | A | B | C | C | C |
User名のGroup | 有り | 有り | 無し | 有り | 有り |
ubuntu version | 20.04 | 20.04 | 20.04 | 20.04 | 20.04 |
docker version | 20.10.21 | 23.0.2 | 20.10.21 | 20.10.21 | 20.10.25 |
Result (bind mount /etc/passwd) | OK | OK | NG | NG | OK |