コンテナの起動中にスクリプトを実行しようとしています。
通常のLinuxマシンの場合、/etc/rc.local
にスクリプトがあると、再起動時にスクリプトが実行されます。
Dockerイメージをビルドするときに、同じことをしようとしています。 /etc/rc.local
ファイルを新しいコンテンツで上書きしてから、実行します
Sudo docker run -d <image id>
/etc/rc.local
が実行されることを期待していましたが、何も起こりません。
私はそれを間違った場所でやっていますか?
Dockerは、実行するように指示した1つまたは複数のプロセスのみを実行します。
Dockerコンテナーには通常、機能するinitシステムがありません。これらは、起動時にすべての初期化を実行する完全なオペレーティングシステムを含む仮想マシンとは異なります。
お望みならば /etc/rc.local
実行するには、自分で開始する必要があります。何かのようなもの:
docker run image /bin/bash -c "/etc/rc.local; <your command>"
起動時にサービスの実行をサポートする代替ベースイメージがいくつかあります。 phusion/baseimage-docker 。
この記事 を読んで、Dockerとコンテナーの起動に関する問題と問題を理解してください。