2017-04-04 5 views
1

CentOS 7に基づいてR、shiny-server、rstudio-serverをホストするDockerコンテナを作成しようとしていますが、サービスのためにsystemdを持っている必要があります始めること。 systemdを有効にしたcentosイメージを基本として使用できますが、特権モードでコンテナを実行し、ホスト上の/ sys/fs/cgroupへのアクセスを許可する必要があります。安全性の低い状況には耐えられるかもしれませんが、WindowsやMac上でDockerを実行しているユーザーとコンテナを共有することはできません。CentOS 7でのサービスシステムなしのDockerイメージ

この質問は見つかりましたが、2歳で解決策がないようです。

ヒントや選択肢があります。

更新:成功!

これは私が見つけたものです:光沢のあるサーバーでは、コマンドラインから適切なパラメータを指定してshiny-serverを実行するだけでした。適切な呼び出しをスクリプトファイルに取り込み、Dockerfileの最後のCMD行を使用して呼び出します。

rstudio-serverはもっとトリッキーでした。まず、initscriptsをインストールして、rstudioスクリプトのいくつかが動作するように依存関係を取得する必要がありました。その後、rstudio-server startを実行すると、基本的に何もせずにエラーが発生しません。私は様々なリンクを介してコールをトレースし、/ usr/lib/rstudio-server/bin/rstudio-serverに自分自身が見つかりました。 daemonCmd()関数はcat/proc/1/commをテストして、サーバーの起動方法を決定します。何らかの理由で失敗しましたが、スクリプトを見ると、/etc/init.d/rstudio-server startを実行する必要があることは明らかです。私が手動で、またはDocker CMDラインでそれを行うと、動作するようです。

私はこれらの2つのCMDライン要件をとり、DockerfileのCMDラインから呼び出されるshスクリプトに入れました。

ハックのビットですが、悪くありません。私は他の提案を聞いてうれしいです。

+1

_why_ systemdが必要ですか? – jaxxstorm

+0

shiny-serverとrstudio-serverは、インストール時にサービスを有効にして起動するためにsystemdが必要です。 systemdのない状態でこの種のサービスを開始する方法はありますか?私はinitを試みましたが、回避できない他のsystemdの依存関係があるようでした。 – KirkDCO

答えて

1

必ずしもsystemdのようなinitシステムを使う必要はありません。

基本的に、複数のサービスを開始する必要があります。これには既存のパターンがあります。 supervisordを使って同じことを達成する方法についてはこのページをご覧ください:https://docs.docker.com/engine/admin/using_supervisord/

関連する問題