【Docker入門】DockerfileからNginxのDockerイメージを作成する

DockerfileからNginxイメージを作成して
起動する手順を紹介します!

目次

Dockerイメージ作成準備

作成するファイルの構成

このようなディレクトリ構成で「Dockerfile」、「default.conf」、「index.html」を作成します。

$ tree nginx
nginx/
├── Dockerfile
├── default.conf
└── index.html

Dockerfileを作成する

FROM nginx:latest
COPY ./default.conf /etc/nginx/conf.d/default.conf
COPY ./index.html /var/www/index.html

FROM:ビルドするイメージのベースイメージを取得します。
COPY:ホスト側からコンテナ側にファイルやディレクトリをコピーします。

ここでは、nginx:latestのベースイメージを使用して、ローカルPCにあるdefault.conf、index.htmlファイルをコンテナ側の指定のディレクトリにコピーしています。

次にDockerfile内でよく使われる命令を紹介します。

コマンド説明
FROMビルドするイメージのベースイメージ
RUNイメージビルド時に、コンテナで実行するコマンドを定義
COPYホスト側からコンテナ側にファイルやディレクトリをコピー
ADDCOPYコマンド+αの機能を提供。URLからダウンロードしてコピー先に転送などができる
CMDdocker run 時に実行されるコマンド
ENTRYPOINTコンテナを実行可能ファイルとして使用する際に定義するコマンド
ARGdocker image build時に利用する変数
ENVコンテナ内の環境変数を定義
EXPOSEコンテナが公開するポート
VOLUMEホストや他のコンテナからマウント可能なボリュームを指定する
LABELイメージに追加するメタデータ
STOPSIGNALコンテナに送られて終了するシステムコール信号を設定
HEALTHCHECKコンテナ内でコマンドを実行し、その結果をヘルスチェック(死活監視)として利用する
USERコンテナで使用されるユーザ名(UID)
WORKDIR作業ディレクトリを変更する
ONBUILDコンテナ内で実行するコマンドを定義するが、定義したイメージでは実行されない。
ONBUILDを定義したベースイメージを利用するイメージのビルド時に実行される。

参考

この書籍ではDocker・Docker Compose・Kubernetesについて実践的な内容が解説されています。
Docker関連技術を網羅的に学習できます。

default.confを作成する

server {
    listen 8080 default_server;
    server_name localhost;
    location / {
        root /var/www;
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
    }
}

index.htmlを作成する

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>nginx test</title>
  </head>
  <body>
    <h1>Hello, Nginx!</h1>
  </body>
</html>

Dockerイメージを作成する

必要なファイルの準備ができたので、いよいよDockerイメージを作成します。

Dockerイメージを作成するには docker build コマンドを使用します。

$ docker build -t docker-nginx .
Sending build context to Docker daemon  4.096kB
Step 1/3 : FROM nginx:latest
 ---> f0b8a9a54136
Step 2/3 : COPY ./default.conf /etc/nginx/conf.d/default.conf
 ---> eed1540a1f89
Step 3/3 : COPY ./index.html /var/www/index.html
 ---> c0881b2def7e
Successfully built c0881b2def7e
Successfully tagged docker-nginx:latest

作成されたDockerイメージを確認します。

$ docker images

REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
docker-nginx                  latest              c0881b2def7e        58 seconds ago      133MB

先ほど作成したイメージが表示されました!

作成したイメージを使ってDockerコンテナを起動する

コンテナを起動するには以下のようにコマンドを実行します。

$ docker run --name <コンテナ名> --rm -d -p <ホスト側ポート>:<コンテナ側ポート> <イメージ名>

「docker run」:コンテナを起動するコマンドです。
「–name <コンテナ名>」:コンテナ名には任意の名前を指定します。コンテナの識別や操作にこの名前を使うことができるので指定しておくことをおすすめします。
「–rm」:このオプションをつけると docker stop でコンテナを停止した際、コンテナの削除も行いますので、指定しておくことをおすすめします。
「-d」: デタッチモードで起動します。この指定でコンテナがバックグラウンドで実行します。
「-p」:ホスト側ポートはパソコン側のポートで、コンテナ側ポートは起動したDockerコンテナのポートになります。
「イメージ名」:先ほどdocker buildの時に指定したイメージ名を指定します。

それでは実際にコンテナを起動してみましょう。

$ docker run --name nginx-test --rm -d -p 8080:8080 docker-nginx

コンテナが起動しているか確認します。
起動しているコンテナを確認するには docker ps コマンドを使用します。

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
de1e22a425d1        docker-nginx        "/docker-entrypoint.…"   34 seconds ago      Up 32 seconds       80/tcp, 0.0.0.0:8080->8080/tcp      nginx-test

STATUSがUPになっているので起動しているようです。

ではブラウザから「localhost:8080」にアクセスしてみましょう。
期待通り、「Hello, Nginx!」が表示されましたね!

あわせて読みたい
【HTML・プログラミング独学】初心者でも独学したい!プログラミングが身につく厳選おすすめサイト プログラミングは初心者だけど、独学で勉強してみたい! プログラミングを全くしたことがない初心者でも独学で勉強できるおすすめサイトを厳選して紹介します! 初心者...

まとめ

以上、DockerfileからNginxのDockerイメージを作成して、コンテナの起動まで行う手順をご紹介しました。

最後まで読んでいただき、ありがとうございました。
この記事が少しでもみなさまのお役に立てれば嬉しいです。


当ブログではWordPressテーマにSWELLを使用しています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次