LoginSignup
6
6

More than 5 years have passed since last update.

AWS を使った Docker の基本学習 (2) Dockerfile からのイメージ作成

Last updated at Posted at 2015-05-31

今回は、Dockerfile を使ってWebサーバーのイメージを作成して、それからコンテナを起動してみる。

Dockerfile とは?

Docker イメージの構成情報を記述したテキストファイル。Dockerfile をビルドすることにより、イメージを作成することができる。

手作業でコンテナを修正(パッケージをインストールする等)してからイメージ化するのに比べて、イメージの構成内容が把握できる、テキストなのでGitなどでバージョン管理できる、手作業によるイメージ作成時のミスが減る、などのメリットがある。

準備

まず、前回と同じように、EC2のインスタンスを立ち上げて Docker をインストールする。

次に作業用のディレクトリを作成(どこに作ってもよい)。

$ mkdir ~/workdir

Webサーバーで使うHTMLファイルや画像を作業ディレクトリ以下に配置。今回は、site というサブディレクトリを作って、次のようにファイルを置いた。

~/workdir/site/
  ├─ index.html
  └─ img
     ├─ apple.jpg
     ├─ kitten.jpg
     └─ sakura.jpg

Dockerfile の作成

作業ディレクトリ(~/workdir)に Dockerfile を作成。

$ vi ~/workdir/Dockerfile

Dockerfile の中身は以下のようなもの。httpd をインストールして、ファイルをコピーしてるだけ。

FROM centos:6.6
MAINTAINER arturias <arturias@example.com>
RUN yum install httpd -y
ADD site /var/www/html
ENTRYPOINT /usr/sbin/apachectl -DFOREGROUND

Dockerfile 中の命令の簡単な説明。
- FROM : ベースとなるイメージの指定
- RUN : イメージ作成中に実行したいコマンド
- Add : イメージに追加するファイルやディレクトリ
- ENTRYPOINT : docker run でコンテナを起動した際に、コンテナ内で実行されるコマンド。

(補足) 上記の ADD コマンドでは、EC2インスタンス側の site ディレクトリの中身がイメージ内の /var/www/html 以下にコピーされる。なので、イメージ内では /var/www/html/site/index.html ではなくて /var/www/html/index.html というようにファイルが配置される。

イメージのビルド

docker build コマンドでイメージをビルドする。など、docker build コマンドの一番最後のピリオドは、Dockerfile が置かれているディレクトリを表している。

$ cd ~/workdir
$ docker build -t arturias/myweb2 .

# イメージが出来たか確認してみる。
$ docker images

コンテナの起動

作成したイメージを使ってコンテナを起動。なお、Dockerfile 内で ENTRYPOINT を指定したので、コンテナ内で実行するコマンドを docker run に渡す必要は無い。

$ docker run -d -p 80:80 arturias/myweb2

AWS のセキュリティグループの設定で、EC2インスタンスにHTTPでのアクセス(TCP 80) ができるように設定する。

ブラウザから、EC2インスタンスのPublic IPにアクセスする。
例えば、こんな感じでWebページが表示される。
20150531-website.jpg

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6