【docker】apache インストール

CentOSのdocker イメージからコンテナを生成し、そのコンテナにwebサーバをインストールします。
webサーバはapacheを使用します。
簡単なdockerコンテナの起動については理解していることを前提としますので、以下を参考にしてからこの記事を読んで下さい。

やりたいこと

やりたいことは以下の通りです。

  1. docker hub から CentOS7のイメージをダウンロードし、コンテナを起動する。
  2. コンテナへログインする。
  3. apacheをインストールし、apacheを起動する。

コンテナ起動

今回、apacheを使用する際、いくつかオプションを指定してdockerコンテナを生成する必要があります。
また、dockerイメージはコンテナ生成時にダウンロードするので、docker pull コマンドは使用しません。

ポートフォワード

apacheを使用してHTTPリクエストを受ける場合、ポートフォワードで接続ポートを指定する必要があります。
-p オプションを使用し、接続ポートを指定します。 “ホストOSポート:ゲストOSポート” の形式で指定します。
apacheはデフォルトの設定だと、ポート80でHTTPリクエストを受けます。したがって、ゲストOSのポートは80とします。
ホストOSのポートは任意のポート番号で構いませんが、他のコンテナがポートフォワードをしている場合、そのポート番号は使用出来ません。また、well-knownポート(ウェルノウンポート)の指定は避けて下さい。ホストOSで既に使用されているのでウェルノウンポートの利用はしない方が良いです。ポートに関しては説明しないので、詳しく知りたい場合は他のサイトを参考にして下さい。

権限モードでの実行

dockerコンテナでhttpdサービス(apache)を起動したい場合、権限を指定しないと起動が出来ませんでした。
/sbin/init--privileged オプションを使用します。
dockerコンテナを起動する場合、あらゆる権限が付与されない状態のようで、OSの起動時に(/sbin/initの段階で)権限を付与することでサービスの操作を行えるようにするという感じです。
詳しい説明は他のサイトを参照して下さい。

コンテナ起動

上記を考慮し、以下のコマンドを実行しdockerコンテナを生成します。

エラーでなければ成功です。自分の環境では以下のような数字が表示されました。

起動の確認

dockerコンテナが起動していることを確認します。
docker ps コマンドを使用します。
-a オプションで全てのコンテナの状態が確認出来ます。

起動していれば、STATUSがUPになっています。

コンテナへログイン

生成したCentOS7コンテナへログインします。
docker exec コマンドを使用し、ログインしたいコンテナ名を指定します。コンテナ名でなくコンテナIDでも指定可能です。

apaccheの起動

centosへapacheをインストールする方法については以下を参照して下さい。

apacheのインストール

apache インストール

確認

最後に、apacheのデフォルトページが表示されることを確認しましょう。
以下のURLをブラウザに入力します。

以下のような画面が表示されることを確認します。

まとめ

今回はCentOSのイメージを利用し、生成したコンテナへapacheをインストールしました。
docker hub ではapacheがインストールされたイメージも存在しますので、そちらを使うのも良いでしょう。

次回は更にPHPをインストールします。

© DeNnie.Lab All Rights Reserved.