CLOVER🍀

That was when it all began.

Dockerコンテナ内のUbuntu Linux上で、パッケージインストールしたTomcatの起動に失敗する(失敗したように見える)場合

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.

今度は起動に成功します。