■目的
前回、Dockerを色々触ってみてなんとなく感触が掴めました。
今回は理想形への第一歩として「Webサーバ」をDockerで作成してみたいと思います。
【追記】
有識者より「1コンテナ1プロセス」が良い、とご教授いただいたので、「Apache」と「Java」は分けて考えた方が良さそうです。
■Webサーバの構成
OSは「CentOS 6.7」、「Apache」と「Java」をインストールしたいので、docker pull
でイメージをダウンロードできなさそうです。
(上記構成のイメージが配布されているかもしれませんが...)
「Dockerfile」を作成して、自前でイメージを作成することにします。
■手順
1. Dockerfile作成
任意の場所に「Dockerfile」を作成する
$ touch Dockerfile
2. Dockerfileに以下を記述する
# CentOS 6.7のイメージ
FROM centos:6.7
# 管理者
MAINTAINER nagi244<hoge@hoge.co.jp>
# システムアップデートと「wget」インストール
RUN yum -y update && yum -y install wget && yum clean all
# Apacheインストール
RUN yum -y install httpd && yum clean all
# JDKインストール
RUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u71-b15/jdk-8u71-linux-x64.rpm" \
&& yum -y localinstall jdk-8u71-linux-x64.rpm \
&& yum clean all \
&& rm jdk-8u71-linux-x64.rpm
# コンテナ内のポート番号
EXPOSE 80
# コンテナ内でフォアグラウンドで実行
ENTRYPOINT ["/usr/sbin/httpd"]
CMD ["-D", "FOREGROUND"]
JDKのバージョンは、こちらでURLをコピーしてお好みのバージョンをインストールできます。
3. イメージ作成
Dockerfileからイメージを作成するには、docker build
コマンドを使用します。
「-t」オプションでイメージのリポジトリ名を付けられるようです。今回はわかりやすく「web-server」としました。
「.」はDockerfileの場所です。Dockerfileと同じ場所でコマンドを叩いています。
$ docker build -t web-server .
成功したら、docker images
コマンドでイメージができたか確認します。
4. Docker起動
以下のコマンドで、Dockerをバックグランウンドで起動します。
ポート番号「8080」は、外部からコンテナにアクセスする際に使用するポート番号のようです。
$ docker run --name hoge1 -d -p 8080:80 web-server
5. 動作確認
ホストのブラウザで「http://[VMのIPアドレス]:8080/」にアクセスしてみます。「Apache 2 Test Page」が表示されました!
無事WebサーバをDockerで作成できました。