ウェブサーバーしたい(httpd

1$ docker run -d -p 8080:80 --name my-httpd httpd

代表的なApacheをDockerを使って遊んでみようと思います。 Apacheコンテナのイメージ名はhttpdです。 ポート番号を8080番(-p 8080:80)し、コンテナの名前をmy-httpd--name httpd)として起動しています。 コンテナが起動したらブラウザでhttp://localhost:8080を開いて「It works!」と表示されていればOKです。

コンテナには任意の名前をつけることができます。 僕はテスト時にはmy-イメージ名とつけることにしています。 以下では、このコンテナ名を使って、起動したコンテナにdocker exec -itでログインしています。

コマンドを追加したい(apt-get

1$ docker excec -it my-httpd bash
2(my-httpd) $ apt-get update
3(my-httpd) $ apt-get install less
4(my-httpd) $ which less
5/usr/bin/less
6(my-httpd) $ apt-get install vim
7(my-httpd) $ which vim
8/usr/bin/vim

公式レジストリから取得したイメージには、(使い慣れた)コマンドが入っていないことがあります。 コンテナの中でapt-getを使って追加できます。 この場合はlessvimをインストールしています。

設定ファイルを確認したい(httpd.conf

1$ docker exec -it my-httpd bash
2(my-httpd) $ find . -name httpd.conf
3./conf/original/httpd.conf
4./conf/httpd.conf
5(my-httpd) $ less conf/httpd.conf

Apacheサーバー設定のファイル名はhttpd.confです。 ファイルの場所が分からない場合はfindコマンドで検索できます。 このコンテナでは/usr/local/apache2/conf/httpd.confにありました。

トップページを変更したい

1$ docker exec -it my-httpd bash
2(my-httpd) $ grep "DocumentRoot" conf/httpd.conf
3DocumentRoot "/usr/local/apache2/htdocs"
4(my-httpd) $ vi htdocs/index.html

まず、設定ファイル(httpd.conf)の中で、ドキュメントルートとなっているディレクトリを探します。 設定ファイルに対してgrepコマンドを使いDocumentRootという文字列を検索しました。 すると、ドキュメントルートは/usr/local/apache2/htdocs/であることが分かりました。

トップページを変更する場合はhtdocs/index.htmlを編集すればよさそうです。 また、他にもウェブサーバーで公開したいファイルは、このドキュメントルートの下に配置すればOKです。

リファレンス