web-dev-qa-db-ja.com

Dockerコンテナの起動時にrootとしてスクリプトを実行できますか?

コンテナの起動中にスクリプトを実行しようとしています。

通常のLinuxマシンの場合、/etc/rc.localにスクリプトがあると、再起動時にスクリプトが実行されます。

Dockerイメージをビルドするときに、同じことをしようとしています。 /etc/rc.localファイルを新しいコンテンツで上書きしてから、実行します

Sudo docker run -d <image id>

/etc/rc.localが実行されることを期待していましたが、何も起こりません。

私はそれを間違った場所でやっていますか?

3
jojo

Dockerは、実行するように指示した1つまたは複数のプロセスのみを実行します。

Dockerコンテナーには通常、機能するinitシステムがありません。これらは、起動時にすべての初期化を実行する完全なオペレーティングシステムを含む仮想マシンとは異なります。

お望みならば /etc/rc.local実行するには、自分で開始する必要があります。何かのようなもの:

docker run image /bin/bash -c "/etc/rc.local; <your command>"

起動時にサービスの実行をサポートする代替ベースイメージがいくつかあります。 phusion/baseimage-docker

この記事 を読んで、Dockerとコンテナーの起動に関する問題と問題を理解してください。

1
NZD