Dockerコンテナ内でインストールしたTomcatを、以下のようなコマンドで起動しようとすると失敗したように見えることがあります。
# service tomcat8 start [FAIL] Starting Tomcat servlet engine: tomcat8 failed!
Docker起動時のコマンドは、こんな感じ。
$ docker run -it --rm -p 8080:8080 my-container:latest
この時、Tomcatそのものは起動しているのですが、起動/etc/init.d/tomcat8スクリプト内では戻り値のハンドリングのところで起動に失敗したように見えてしまいます。PIDファイルができないので、stopもできません。
調べてみると、どうもDockerコンテナ起動時にパーミッションが足りないのだとか。
tomcat - tomcat7 fail to start inside Ubuntu Docker container - Stack Overflow
というわけで、起動時に「--cap-add SYS_PTRACE」を付けてみます。
$ docker run -it --rm -p 8080:8080 --cap-add SYS_PTRACE my-container:latest [ ok ] Starting Tomcat servlet engine: tomcat8.
今度は起動に成功します。