端くれプログラマの備忘録 Docker [Docker] Apacheセットアップ例 (2)

[Docker] Apacheセットアップ例 (2)

Dockerに馴染むべく、以下の例をなぞってみる。

Dockerでapacheを動かす – in the mythosil
http://mythosil.hatenablog.com/entry/2013/12/08/203530

$ vi Dockerfile
FROM ubuntu:12.04

MAINTAINER 84kure

RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/source.list
RUN apt-get update
RUN apt-get -y install apache2

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2

# ADDコマンドでローカルのディレクトリをDockerイメージにコピー
ADD ./htdocs /var/www

EXPOSE 80

CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]

コピー元ディレクトリにhtmlファイルを作成。

$ mkdir htdocs
$ cd htdocs
$ vi index.html
<html>
<body>Hello, World</body>
</html>
$ cd ..

タグ付けして(-t apache)、イメージ作成。

$ sudo docker build -t apache .

ポートのリダイレクトを指定して(-p)、バックラウンド(-d)でコンテナ起動。

$ sudo docker run -p 8080:80 -d apache

ホストOSからアクセスして確認。 http://192.168.33.10:8080/

Hello World

DockerイメージにコピーしたHTMLファイルの内容が表示されるはず。

ログのコピー。コンテナ中のファイルは”コンテナID:パス”と指定できる。

$ sudo docker ps -a ←コンテナIDを調べる
$ sudo docker cp 1d734b:/var/log/apache2 .

コンテナ停止。

$ sudo docker stop 1d734b
$ sudo docker ps -a
$ sudo docker images