Docker コンテナに Apache2 をインストールして Docker コンテナを起動(docker run または docker start)しても、Apache2 は起動してくれない。ググるとどうも Docker は /sbin/init などが書き換えられているらしく、ふだん我々が普通に使用している Apache2 などのサーバサービス(多くは service コマンドで起動・停止などコントロールできるもの)を自動起動できないようだ。いろいろな方法があるようだが、結局は以下の方法が一番簡単なように思う。
docker コンテナにログイン後、docker コンテナ内の /root/.bashrc ファイルの最後に以下の 1行を加える(Apache2 の場合)
vi ~/.bashrc
service apache2 start
Docker のホスト OS (Ubuntu 14.04 LTS で確認済み)で、以下のファイルを作成する。
vi /etc/init/start_docker.conf
description "Start Docker On Boot"
author "yas"
start on runlevel [2345]
stop on runlevel [016]
exec /usr/bin/docker start <コンテナの ID>
respawn
そして
docker run --name <Docker 名> -h <ホスト名> -it <コンテナ ID> /bin/bash
として Docker コンテナを走らせれば、たったこれだけで次回サーバ再起動時には Docker コンテナ内の Apache2 が起動してくれる。