LoginSignup
18
15

More than 5 years have passed since last update.

Docker入門 CentOSとNginxでWebサーバー構築

Posted at

目的

  • DockerでWebサーバを構築する
  • コンテナOS: centos7
  • webサーバー: Nginx

Docker

  • コンテナ型の仮想環境構築プラットフォーム
  • VirtualBoxなど仮想マシンに比べて軽量で高速
  • Dockerfileによるコード共有で同一環境の作成が容易

公式ドキュメント
https://docs.docker.com/

公式ドキュメントの日本語化プロジェクト
http://docs.docker.jp/index.html

Dockerfile作成

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/nginx.repo
[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スタブなどを作ってみようと思う

18
15
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
18
15