概要
docker run --net=host でコンテナを実行し、そのコンテナでsuを実行する必要があるときに
su: System error
というエラーがでたので、その対処方法をさがしたい
結論
--pid=host
もつけてみる
概要
Googleで調べてみたら、以下のようなものがみつかった。
その中のコメントにあった
自分の手元で、実行してみると たしかに12.04では実行ができるが、14.04.4では実行ができなかった。
$ docker run -it --net=host ubuntu:12.04 /bin/bash -c 'su root -c ls'
bin boot dev etc home lib lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var
$ docker run -it --net=host ubuntu:14.04.4 /bin/bash -c 'su root -c ls'
su: System error
であったが --pid=host をつけて実行すると
$ docker run -it --pid=host --net=host ubuntu:14.04.4 /bin/bash -c 'su root -c ls'
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
このようにエラーがなくなった。
なぜ、su するのか?
USER suしたいユーザー
をしたら?
というのが、上のissueでもあったかとおもう。
それで可能ならそれがよいとはおもうのだが、どうしてもしたいときがある。
いろいろ事情があると思うが、おそらくは、データベースなどのデータを自分の権限にしたいとか
なにかこのようなことをする必要があるときがあるのかもしれない。