目的
- DockerでWebサーバを構築する
- コンテナOS: centos7
- webサーバー: Nginx
Docker
- コンテナ型の仮想環境構築プラットフォーム
- VirtualBoxなど仮想マシンに比べて軽量で高速
- Dockerfileによるコード共有で同一環境の作成が容易
公式ドキュメント
https://docs.docker.com/
公式ドキュメントの日本語化プロジェクト
http://docs.docker.jp/index.html
Dockerfile作成
FROM centos:7
LABEL maintainer "My Name <mail@foo.bar>"
COPY ./nginx/nginx.repo /etc/yum.repos.d/nginx.repo
RUN yum install -y nginx
CMD ["nginx", "-g", "daemon off;"]
ここでの記述がなにをしているか確認
FROM
- ベースイメージを指定 以降の命令のベースとなる
-
FROM イメージ
FROM イメージ:タグ
のように記述する - Dockerfileはコメント以外では必ず
FROM
から開始する -
FROM
は複数指定可能
LABEL
- メタデータの記述
- 本例ではmaintainer(Author)を記述した
- 任意項目のため必要な分だけ記述する
COPY
- ローカルのファイルをコンテナにコピーする
centosにnginxのリポジトリが登録されてない場合にNo package nginx available
エラーが発現しインストールできないため、本例3行目の記述でリポジトリを追加する
ローカルにリポジトリ追加記述ファイルを作っておく
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
RUN
- コマンドを実行する
- イメージのビルド(docker build)時に実行される
- シェル形式・exec形式での記述が可能
- 本例ではcentos7にnginxをyum installする
RUN yum install -y nginx
CMD
- コマンドを実行する
- buildされたイメージからコンテナを作成(docker run)するときに実行される
- 推奨フォーマットはexec形式
CMD ["実行バイナリ", "パラメータ1", "パラメータ2"]
- シェル形式でも記述可能
- 本例ではnginxサーバを起動する
CMD ["nginx", "-g", "daemon off;"]
Dockerイメージ作成
上記で作成したDockerfileをビルドしイメージを作成する
$ docker build -t centos-nginx:1.0 .
オプションを確認する
-t
作成するイメージ名:タグを指定する
-t イメージ名:タグ
または --tag=イメージ名:タグ
のように記述
Dockerコンテナ起動
上記で作成したDockerイメージからコンテナを起動する
$ docker run -d -p 8000:80 centos-nginx:1.0
オプションを確認する
-d
バックグラウンド実行用オプション
-d
または --detach
-p
コンテナのポートを指定するオプション
-p ポート番号
または --publish=ポート番号
のように記述
本例ではコンテナ起動後にブラウザで http://localhost:8000
にアクセスし、Nginxの起動を確認する
Welcome to nginx!
画面が出ていれば正常
まとめ
docker入門編としてwebサーバを構築するところまでやってみた
学習コストが高い分自由度が高く、使いこなせればおもしろそう
nginx.confなどの細かい設定やdockerの細かいオプションなども勉強していきたい
次はnginxを利用したAPIスタブなどを作ってみようと思う