LoginSignup
1
1

More than 5 years have passed since last update.

docker run --net=host を使ったら su すると su: System error がでてきたときの対処方法

Posted at

概要

docker run --net=host でコンテナを実行し、そのコンテナでsuを実行する必要があるときに

su: System error

というエラーがでたので、その対処方法をさがしたい

結論

--pid=host

もつけてみる

概要

Googleで調べてみたら、以下のようなものがみつかった。

その中のコメントにあった

docker host network model cause command "su" execute problem in container · Issue #5899 · docker/docker

自分の手元で、実行してみると たしかに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でもあったかとおもう。
それで可能ならそれがよいとはおもうのだが、どうしてもしたいときがある。

いろいろ事情があると思うが、おそらくは、データベースなどのデータを自分の権限にしたいとか
なにかこのようなことをする必要があるときがあるのかもしれない。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1